题目链接:https://codeforces.com/contest/1314/problem/D

大意:
\(n\) 个顶点的有向图,顶点编号为 \(1\) 到 \(n\),任意两个不同的顶点 \(A,B\),都有一条带权有向边 \(A\rightarrow B\)。
Masha想从 \(1\) 出发走 \(k\) 条边之后返回 \(1\),且不走长度为奇数的环。(某一时刻Masha在 \(v\),之后走了经过奇数条路径后回到 \(v\),这是不允许的)
问Masha走过的路径权值之和的最小值
(\(n \le 80\),\(k\le 10\),边权 \(\le 10^8\),保证k是偶数)

不要看位置是D,这题是除了签到题外最简单的题qwq但我还是没做出来

我首先想到的是广义矩阵乘法,即把矩阵乘法中的乘法换成加法,加法换成最小值(即 \(C_{i,j}=\min_{k=1}^n (A_{i,k}+B_{k,j})\)),这样邻接矩阵的 \(k\) 次方取 \(C_{1,1}\) 就是(伪)答案
但是这个答案是允许奇环的,所以比赛时我接下来就不知道在干嘛了

第一种思路是先染色,把点分成两部分,不允许走偶数次到达的点(黑点)和不允许走奇数次到达的点(白点),连接黑黑或白白的边权都设成 inf,这样构造的新的矩阵再 \(k\) 次方就行了。当时我一算,要至少算 \(\binom{79}{4}=1502501‬\) 次矩阵快速幂,每个矩阵快速幂复杂度 \(80^2\times 4=25600\),感觉十分绝望

这个思路的正解其实是把所有点随机染色成黑白,每跑一遍矩快更新一下答案。事实上染色正确的概率是 \(\dfrac 1 {512}\),跑个几千次完全没问题(果然我还没领悟随机化的精髓

第二种思路是确定走偶数次到达的点(假设已染黑),这样所有走奇数次到达的点可以随心所欲不逾矩(只要不是黑点就行了),它们两两互不干涉,所以在确定黑点的基础上for一下就行了。这样复杂度是 \(80^5=3276800000\),不够优化,哭唧唧

这个思路的正解是事先处理一下所有的 \(A\rightarrow C \rightarrow B\) 的权值和存到数组 f[A][B] 中,然后排个序。如果要找 \(A\) 经过某一点到 \(B\) 的最短路(这个“某一点”不能是黑点),就从 f[A][B] 中找第一个不是黑点的路径。黑点最多也就5个,比找80次强多了

代码?代码是不存在的,作者太懒了

CF round 623 Div.1D Tourism 题解的更多相关文章

  1. 竞赛题解 - CF Round #524 Div.2

    CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...

  2. # Codeforces Round #529(Div.3)个人题解

    Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Re ...

  3. CF Round #551 (Div. 2) D

    CF Round #551 (Div. 2) D 链接 https://codeforces.com/contest/1153/problem/D 思路 不考虑赋值和贪心,考虑排名. 设\(dp_i\ ...

  4. CF Round #510 (Div. 2)

    前言:没想到那么快就打了第二场,题目难度比CF Round #509 (Div. 2)这场要难些,不过我依旧菜,这场更是被\(D\)题卡了,最后\(C\)题都来不及敲了..最后才\(A\)了\(3\) ...

  5. CF Round #600 (Div 2) 解题报告(A~E)

    CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...

  6. Codeforces Round #557 (Div. 1) 简要题解

    Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...

  7. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

  8. cf Round#273 Div.2

    题目链接,点击一下 Round#273 Div.2 ================== problem A Initial Bet ================== 很简单,打了两三场的cf第一 ...

  9. Codeforces Round #540 (Div. 3) 部分题解

    Codeforces Round #540 (Div. 3) 题目链接:https://codeforces.com/contest/1118 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...

随机推荐

  1. discuz如何修改主题列表页增加最后发表用户调用

    首页有点问题,我觉得摘要实在太长了,我调整了一下 <!--{if is_array($group['lastpost'])}--> <a href="forum.php?m ...

  2. ubuntu系统下安装pip3及第三方库的安装

    ubuntu系统下会自带python2.x和python3.x坏境,不需要我们去安装.并且ubuntu系统下还会自动帮助我们安装python2.x坏境下的pip安装工具, 但是没有python3.x坏 ...

  3. 7.场景5:使用Linux桥的VRRP(L3HA)的高可用性

    此场景描述了使用ML2插件和Linux网桥的OpenStack网络服务的高可用性实现. 他的高可用性实施例增强了这样的场景:具有Linux网桥架构的传统使用了keepalived的虚拟路由器冗余协议( ...

  4. java架构之路-(netty专题)初步认识BIO、NIO、AIO

    本次我们主要来说一下我们的IO阻塞模型,只是不多,但是一定要理解,对于后面理解netty很重要的 IO模型精讲  IO模型就是说用什么样的通道进行数据的发送和接收,Java共支持3种网络编程IO模式: ...

  5. Exchange2010安装指南

    安装流程参考下面的: https://jingyan.baidu.com/article/2c8c281d6893680008252a9c.html 安装环境:windows server 2008( ...

  6. RT600 I2S外设介绍及应用

    恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作.不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核 ...

  7. python 内置模块之os、sys、shutil

    一.OS模块 用于提供系统级别的操作. OS 目录和文件 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改 ...

  8. 目标检测之单步检测(Single Shot detectors)

    目标检测之单步检测(Single Shot detectors) 前言 像RCNN,fast RCNN,faster RCNN,这类检测方法都需要先通过一些方法得到候选区域,然后对这些候选区使用高质量 ...

  9. HDU6191 Query on A Tree (01字典树+启发式合并)

    题意: 给你一棵1e5的有根树,每个节点有点权,1e5个询问(u,x),问你子树u中与x异或最大的值是多少 思路: 自下而上启发式合并01字典树,注意合并时清空trie 线段树.字典树这种结构确定的数 ...

  10. 我的一个配置redux(实现一次存储与调用方法)之旅

    前言 : 今天呢,就配置一下redux,redux的重要性呢,就叭叭叭一大堆,什么也没有带着配置一次来的重要,因为许多涉及到的属性和方法,用法是活的,但格式是需要记忆的. 过程中不要嫌我唠叨,有的地方 ...