TG Day1 T3 开车旅行

1. 预处理出从每座城市两人分别会到达的两座城市。

用 set 可以轻松实现。

2. 用倍增优化 DP

令 \(f_{i,j,k}\) 表示从城市 \(j\) 出发,行驶 \(2^i\) 天会到达的城市。

令 \(ga_{i,j,0/1}\) 表示从城市 \(j\) 出发,行驶 \(2^i\) 天,小 A/B 先开车,小 A 行驶的路程。

令 \(gb_{i,j,0/1}\) 表示从城市 \(j\) 出发,行驶 \(2^i\) 天,小 A/B 先开车,小 B 行驶的路程。

3. 第一行的答案

枚举每座城市,用倍增加速行驶的过程即可。

4. 询问的答案

同 3。

然后此题就做完了,时间复杂度 \(O\left(\left(n+m\right)\log n\right)\)。

TG Day2 T2 借教室

二分然后差分判断,时间复杂度 \(O\left(\left(n+m\right)\log m\right)\)。

TG Day2 T3 疫情控制

首先时间越多越容易合法,二话不说套上二分。

继续观察,发现在不回到根的情况下,军队深度肯定越小越好。

所以军队能往上移就往上移,如果能回到根就暂时在根结点的儿子那里停留。这个过程可以用树上倍增优化。

做完这一步后,我们统计出需要军队驻扎的根结点的儿子,显然只要让它们驻扎上军队。

那现在就是要让其它军队移过来,考虑这个过程:

  • 某个儿子只有一支军队驻扎,如果它移到根结点后移不回来了,那么它就应该乖乖待在原处。因为如果它移掉必定需要另一支军队通过根结点移过来,那支军队在根结点处剩余的时间肯定更多,还不如让那支军队去帮助别的儿子。

  • 某个儿子存在至少两支军队,把剩余时间最少的军队留下,剩下的军队移向根结点,这个比较显然。

接着就是一个匹配问题,用剩余时间最小的军队去配移动时间最短的结点,这个贪心也比较显然。

秒杀,时间复杂度 \(O\left(n\log^2n\right)\)。

NOIP2012 解题报告的更多相关文章

  1. NOIP2012普及组 (四年后的)解题报告 -SilverN

    本章施工仍未完成 现在的时间是3.17 0:28,我困得要死 本来今天(昨天?)晚上的计划是把整个四道题的题解写出来,但是到现在还没写完T4的高效算法,简直悲伤. 尝试了用floyd写T4,终于大功告 ...

  2. 【未完成0.0】Noip2012提高组day2 解题报告

    第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一 ...

  3. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  4. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  5. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

  6. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  7. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  8. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

  9. 习题:codevs 1519 过路费 解题报告

    今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...

随机推荐

  1. linux安装日志切割程序

    ====linux安装日志切割程序==== 安装 gcc(1) yum insatll gcc (2)# cd cronolog-1.6.2 4.运行安装 # ./configure# make# m ...

  2. C2. Balanced Removals (Harder) (幾何、思維)

    Codeforce 1237C2 Balanced Removals (Harder) (幾何.思維) 今天我們來看看CF1237C2 題目連結 題目 給你偶數個三維座標點,每次選其中兩點,如果兩點為 ...

  3. 如何给office2019安装visio2019

    1.关于版本,如果你的office2019推荐安装2019visio,2019office只有安装2019visio才不会互斥 下载地址是百度网盘传送,也要安装教程,可是里面的激活器用不了 https ...

  4. day78:luffy:前端对于token的认证&滑动验证码的实现

    目录 1.前端对于token的认证 2.滑动验证码 1.滑动验证码实现的原理 2.滑动验证码的代码实现 1.配置文件 2.前端实现:Login.vue 3.后端实现:改写jwt代码 1.前端对于tok ...

  5. SpringBoot整合JPA遇到的问题

    在学习SpringBoot中使用Repository时出现这种错误 或者使用findOne也会报错,只需要改为 应该是SpringBoot版本的原因,fingOne()方法好像已经不用了.

  6. Qt5打包后缺少dll,启动失败问题

    Qt5使用Qt自带的windeployqt打包程序教程很多,其过程也很简单,但是大部分人在打包过程中会出现提示缺少dll,或者错误0xXXXX等问题,网上各种说法,我测试过基本都不怎么正确,这里写一下 ...

  7. Django前后端安全验证

    会话技术 关注公众号"轻松学编程"了解更多. 1.Cookie 客户端会话技术(数据存储在客户端) 以key-value的形式进行存储 cookie的操作都是通过Response来 ...

  8. Lagrange插值C++程序

    输入:插值节点数组.插值节点处的函数值数组,待求点 输出:函数值 代码如下:把printf的注释取消掉,能打印出中间计算过程,包括Lagrange多项式的求解,多项式每一项等等(代码多次修改,这些pr ...

  9. 剑指offer之顺序打印数组

    算法的要求为: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打 ...

  10. js数组方法(管饱)

    有一些数组方法是ECMAScript新增的,一定要注意浏览器的兼容!! Array对象属性: 属性 说明 constructor 返回对创建此对象的函数引用 length 返回集合内的元素的所有长度 ...