https://gmoj.net/senior/#main/show/5051

Solution

首先注意到每个点有且只有一条出边,也就是说这是一个环套树(森林)。

那么我们可以贪心。

首先这个森林里入度为零的点一定要跟root连边,因为没有任何其他的点可以到入度为零的点,然后就可以通过这些点更新其他的点。这个可以用拓扑来完成。

我们设dis数组表示每个点到root的距离,在拓扑中,如果我们遇见了一个dis>k且入度为零的点,那么就将它和root连边。

这样子树就处理完了,那么我们来考虑环。

不需要额外连边的环可以先判掉,然后对于其他环上已经被更新过的点,先用它们去尝试更新其他点。

那么问题就可以转化为:现在有一个环,环上有一些点已经染了色,我们可以花费1的代价,将一条长为k的链上的点全部染色,要求代价最小。

这个问题的做法是:

先把环剖开,(长度为n的环变成长度为2n的线段),预处理出一个next数组(表示一个点只经过染色点,最远可以到达的点)。

然后设f[i][j]表示第i个点,花费2j的代价,最远能到达的点。我们可用next处理出f[i][0]。

然后从1~n每个点开始跳,求出最少跳几次距离能>n,倍增优化跳跃,取min即可。

GMOJ5409.【GDOI2017模拟一试4.11】平行宇宙的更多相关文章

  1. 【JZOJ 5048】【GDOI2017模拟一试4.11】IQ测试

    题目大意: 判断一个序列是否是另外一个序列删除若干个数字之后得到的. 正文: 我们可以定义两个指针,分别指向长序列和短序列. 拿样例来举例: 如果指针指的数相同,两个指针都往右跳: 如果不同,则指向长 ...

  2. [JZOJ4684] 【GDOI2017模拟8.11】卡牌游戏

    题目 描述 题目大意 有111到2n2n2n牌,一开始分别给两个人,每人nnn张. 轮流出牌,给出对手出牌的顺序,若自己的牌更大,就记一分. 在中间的某个时刻可以改变游戏规则. 问最大的分数. 思考历 ...

  3. [JZOJ4682] 【GDOI2017模拟8.11】生物学家

    题目 描述 题目大意 有一个010101序列,可以改变状态,每个状态改变都有固定的代价. 接下来有些人想要将一些位置改成特定的状态,如果按照他们要求做了就可以得到一些钱, 否则得不到,有时还要陪钱. ...

  4. 【JZOJ4858】【GDOI2017模拟11.4】Walk

    题目描述 在比特镇一共有n 个街区,编号依次为1 到n,它们之间通过若干条单向道路连接. 比特镇的交通系统极具特色,除了m 条单向道路之外,每个街区还有一个编码vali,不同街区可能拥有相同的编码.如 ...

  5. 【JZOJ4848】【GDOI2017模拟11.3】永恒的契约

    题目描述 宅邸迅速的燃烧着,必须带贝蒂走出禁书库!凭着感觉,又一次直接找到禁书库的门. "你,是那个人嘛?"400年了,当初圣域建立结界时没有进入圣域,被伤了心的人工精灵贝蒂,与强 ...

  6. Noip模拟74 2021.10.11

    T1 自然数 考场上当我发现我的做法可能要打线段树的时候,以为自己百分之百是考虑麻烦了 但还是打了,还过掉了所有的样例,于是十分自信的就交了 正解还真是线段树,真就第一题数据结构 但是包括自己造的小样 ...

  7. java模拟进程调度之模拟抢占试多级轮转调度(附带可视化解决方案)

    1.简介一下多级轮转调度 多级轮转调度是一种提高调度效率的解决方案,简单讲就是讲要执行的程分成几个优先级的列队即例如三个,第一个列队分10个时间片,第二个列队分配1000个时间片,第三个列队表示100 ...

  8. 自己主动化測试程序之中的一个自己定义键盘的模拟測试程序(C语言)

    一.測试程序编写说明 我们做的终端设备上运行的是QT应用程序.使用自己定义的键盘接口.经过測试人员长时间的人机交互測试,来确认系统的功能是否满足需求. 如今须要编写一个自己主动化的測试程序,能够依照预 ...

  9. Noip模拟36 2021.8.11

    刚题的习惯还是改不了,怎么办??? T1 Dove打扑克 考场上打的动态开点线段树+并查集,考后发现自己像一个傻子,并查集就行.. 这几天恶补数据结构疯了 用树状数组维护后缀和,$siz_i$表示编号 ...

随机推荐

  1. IDEA工具java开发之 常用窗口

    ◆project窗口  ◆structure窗口  ◆todo窗口  ◆favorites窗口  ◆termimal窗口 此窗口默认打开的时cmd,所以才这里可以操作任何cmd可以操作的内容, 一般次 ...

  2. 优雅写Java之二(数组集合流)

    一.数组 二.集合 三.流 学习整理中,本文待补充--

  3. Linux程序守护脚本

    不废话,直接上脚本,[]注释的下发语句需要按需替换: #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/us ...

  4. Qt使用QAxObject快速批量读取Excel内容

    网上各种教程用的方法主要是如下这一句: QAxObject * range = worksheet->querySubObject("Cells(int,int)", 1, ...

  5. 理想乡题解 (线段树优化dp)

    题面 思路概述 首先,不难想到本题可以用动态规划来解,这里就省略是如何想到动态规划的了. 转移方程 f[i]=min(f[j]+1)(max(i-m,0)<=j<i 且j符合士兵限定) 注 ...

  6. php---> xhprof安装及使用

    xhprof 简介 xhprof是一款网站的性能工具 安装(lnmp) php --ri xhprof #检查php是否有这个扩展 cd xhprof-0.9.4/xhprof-0.9.4/exten ...

  7. C语言博客作业6

    本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业链接 我在这个课程的目标是 熟悉多分支结构.字符型数据类型和逻辑运算符 这个作业在那个具体方面帮助我实现目标 完成pta作 ...

  8. Android Studio中Gradle sync failed

    问题:Android Studio中更新同步Gradle 失败 Gradle sync failed: Could not find com.android.tools.build:gradle:3. ...

  9. C++内存管理笔记(一)

      C++内存分配的四个层面 : 四个层面的比较: 内存分配与释放的测试: ); //512 bytes free(p1); complex<int>* p2 = new complex& ...

  10. .NET Core WebAPI post参数传递时后端的接收方式

    .NET Core WebAPI post参数传递时后端的接收方式 实体类 dynamic动态类型 JObject参数 单值参数(字符串参数) A.前端Post请求代码 $.ajax({ url: & ...