题解 CF311B Cats Transport】的更多相关文章

前置芝士:斜率优化  剥下这道题的外壳,让它变为一道裸的斜率优化. 很容易想到状态,但复杂度显然过不去,也没有单调性,只能自己创造. 令 $$c[i] = t - sum[i],sum[i] = \sum_{j = 1} ^{i} d[j]$$如果出发时间为t,那么 t - c[i] 即是等待时间将 c 数组排序后,带走其中一个即可以带走旁边几个,那就是变成了连续选择,c排序后有了单调性,那么转移式就成了 dp[k][i]表示第 k 个饲养员,到 i 这个地方取猫的最小代价$$dp[k][i]…
题面:CF311B Cats Transport 题解: 首先我们观察到山与距离其实是没有什么用的,因为对于任意一只猫,我们都可以直接算出如果有一个人要恰好接走它,需要在哪一时刻出发,我们设第i只猫对应的这个时刻为$t_{i}$. 注意这个$t_{i}$是我自己新定义的,跟题目中的没有关系,下面所写的t都是我现在所定义的t,而跟原题面中的t没有任何关系. 然后我们对t数组排个序,于是题意转化为了有m只猫,每只猫有一个权值$t_{i}$,如果出发时间大于等于$t_{i}$,则可以接到第i只猫.设出…
[题解]Cats Transport (斜率优化+单调队列) # When Who Problem Lang Verdict Time Memory 55331572 Jun/09/2019 19:18UTC+8 Winlere D - Cats Transport GNU C++11 Accepted 405 ms 84200 KB 思考的过程很艰难,想清楚之后就不难做了.记录一下思路过程. 时间 事件 14:00 开始审题 14:15 手玩样例 14:30 Observe \(\times…
题意 Zxr960115 is owner of a large farm. He feeds m cute cats and employs p feeders. There's a straight road across the farm and n hills along the road, numbered from 1 to n from left to right. The distance between hill i and (i - 1) is di meters. The…
题目描述 Zxr960115 是一个大农场主.他养了m只可爱的猫子,雇佣了p个铲屎官.这里有一条又直又长的道路穿过了农场,有n个山丘坐落在道路周围,编号自左往右从1到n.山丘i与山丘i-1的距离是Di米.铲屎官们住在1号山丘. 一天,猫子们外出玩耍.猫子i去山丘Hi游玩,在Ti时间结束他的游玩,然后在山丘Hi傻等铲屎官.铲屎官们必须把所有的猫子带上.每个铲屎官直接从H1走到Hn,中间不停下,可以认为不花费时间的把游玩结束的猫子带上.每个铲屎官的速度为一米每单位时间,并且足够强壮来带上任意数量的猫…
AcWing Description Sol 设f[i][j]表示前i个饲养员接走前j只猫咪的最小等待时间. 要接到j猫咪,饲养员的最早出发时间是可求的,设为d: $ d[j]=Tj-\sum_{k=1}^{Hi}Dk$ 然后把d从小到大排序并且求出前缀和s.注意到,一个饲养员带走的猫咪一定是按d排序后连续的一段.假设一个饲养员最后一个接走的猫是第k只,他后面一个饲养员是在d[k]时间出发的,那么,他能接走[k+1,j]的所有猫咪. $f[i][j]=min{f[i-1][k]+dj*(j-k)…
题目链接 题目描述 小S是农场主,他养了 \(M\)只猫,雇了 \(P\) 位饲养员. 农场中有一条笔直的路,路边有 \(N\) 座山,从 \(1\) 到 \(N\)编号. 第 \(i\) 座山与第 \(i-1\) 座山之间的距离为 \(D_i\). 饲养员都住在 \(1\) 号山. 有一天,猫出去玩. 第 \(i\) 只猫去 \(H_i\)号山玩,玩到时刻 \(T_i\) 停止,然后在原地等饲养员来接. 饲养员们必须回收所有的猫. 每个饲养员沿着路从 $1 $号山走到 N 号山,把各座山上已经…
题解-Cats Transport Cats Transport 有 \(n\) 个山丘,\(m\) 只猫子,\(p\) 只铲屎官.第 \(i-1\) 个山丘到第 \(i\) 个山丘的距离是 \(d_i\).第 \(i\) 只猫子在山丘 \(h_i\) 玩 \(t_i\) 时间.每个铲屎官可以选择出发时间,然后从 \(1\) 号山丘一直不停地每秒一个单位走到 \(n\) 号山丘,领走路上已经玩完的猫.求每只猫都被领走的最小猫子等待时间和. 数据范围:\(2\le n\le 10^5\),\(1\…
笔记-Cats Transport Cats Transport 令 \(D_i=\sum_{j=1}^id_i\),\(T_i=t_i-D_{h_i}\). 为 \(T_i\) 从小到大排序,令 \(s_i=\sum_{j=1}^iT_j\). 设 \(f_{a,i}\) 表示第 \(a\) 个人带走猫子 \(i\) 的 \(1\sim i\) 号猫子最小等待时间之和. 设第 \(a-1\) 个人带走了第 \(j\) 个猫子,所以第 \(a\) 个人带走了第 \(j+1\sim i\) 个猫子…
1609:[例 4]Cats Transport 时间限制: 1000 ms         内存限制: 524288 KB sol:非常偷懒的截图了事 注意:只能猫等人,不能人等猫 对于每只猫,我们可以得到一个数字 Cost[i] 表示Dis[H[i]]-T[i],表示在Cost[i]时刻出发刚好不用等(如果出发时间小于Cost[i],就会错过,反之则需要等待) 显然Cost需要排序 那么每个饲养员一定是掌管一段连续的Cost,直接dp是p*m2的,所以用斜率优化,非常套路 推出若 k<l<…
Cats Transport 出发时间居然能是负的,我服了... 卡了我十几次, 我一直以为斜率优化写搓了. 我们能得出dp方程式 dp[ i ][ j ] = min(dp[ k ][ j - 1 ] + hs[ i ] * (cnt[ i ] - cnt[ j ]) - sum[ i ] + sum[ j ]) k < i 这个东西显然能斜率优化, 直接搞. 其实不用离散化直接dp更好写. #include<bits/stdc++.h> #define LL long long #d…
\(Cats Transport\) 感觉这道题题面不好讲,就自翻了一个新的,希望有助于大家理解其思路: 大致题意: \(wch\) 的家里有 \(N\) 座山(山呈直线分布,第 \(i-1\) 座山到第 $i $ 座山距离为 \(Di\) ). \(wch\) 中了 \(M\) 粒种子,第 \(i\) 粒种子在第 \(Hi\) 座山上生长,并在 \(Ti\) 时刻成熟,然后从 \(Ti\) 时刻开始每过一时刻累积一点损坏度(从被采摘的那一刻开始不会继续损坏).但 \(wch\) 只雇佣了 \(…
Cats Transport 现在有n座山,第i座山的坐标为\(d_i\),初始p个饲养员在山1,有m只猫,每只猫有一个属性\(h_i,t_i\)表示猫i 在\(h_i\)以及它在\(t_i\)时间后才能被带走(\(t_i\)之前不算做在等待),现在请安排饲养员的出发时间,每个饲养员的速度都为每个单位长度每个单位时间,让所有的猫被带走之前的等待时间之和最短. \(2<=n<=10^5,1<=m<=10^5,1<=p<=100\) 解 注意到饲养员的出发时间是不可能作为状…
Zxr960115 is owner of a large farm. He feeds m cute cats and employs p feeders. There's a straight road across the farm and n hills along the road, numbered from 1 to n from left to right. The distance between hill i and (i - 1) is di meters. The fee…
Zxr960115 is owner of a large farm. He feeds m cute cats and employs p feeders. There's a straight road across the farm and n hills along the road, numbered from 1 to n from left to right. The distance between hill i and (i - 1) is di meters. The fee…
[链接] 链接 [题意] 有n座山,m只猫. 每只猫都在其中的一些山上玩. 第i只猫在h[i]山上玩,且会在t[i]时刻出现在山脚下(然后就一直在那里等) 然后有p个人. 它们听从你的安排. 在某个时刻从1号山出发,依次经过每座山,如果有猫在山脚.那么它会顺便把它们带走. (山与山之间有距离,然后人移动的速度是1单位每秒) 每个人可以无限数量地拿猫. 问你所有猫的总等待时间的最小值是多少. (人可以在负数的时间出发) [题解] 把山与山之间的距离求成前缀和. 即d[i]表示1..i之间的距离 然…
题目传送门 题意:现在有n座山峰,现在 i-1 与 i 座山峰有 di长的路,现在有m个宠物, 分别在hi座山峰,第ti秒之后可以被带走,现在有p个人,每个人会从1号山峰走到n号山峰,速度1m/s.现在你可以安排好这p个人的出发时间,问所有宠物的等待时间是多少. 题解: 斜率优化DP 我们知道一个人出发之后,该宠物的等待时间就已经决定了. 所以我们可以把每个宠物的0等待时间算出来, 即 A[i] = t[i] - d[h[i]], d为1-h[i]的距离 然后把A[i]排序之后,就可以得到一个出…
传送门 斜率优化dp好题. 对于第i只猫,显然如果管理员想从出发开始刚好接到它,需要在t[i]=h[i]−dist(1,i)" role="presentation" style="position: relative;">t[i]=h[i]−dist(1,i)t[i]=h[i]−dist(1,i)的时候出发才行. 这样的话,如果把第l~r只猫分成一组,那么当前分组需要的最小花费是 t[r]−t[l]+t[r]−t[l+1]+t[r]−t[l+2]+…
LINK 题目大意 有一些猫,放在一些位置,人一步移动一个位置 给出每个猫出现的时间,每个人可以自由安排其出发时间,沿途已经出现的猫捡起,猫等待的时间是被减去的时间减去出现的时间 猫可以等人,人不能等猫 现在有P个人,问猫等待的总时间T最小是多少. 思路 首先可以算出要捡起每个猫最早出发的时间是多少\(c_i\) 然后按照这个值排序,每个人捡起的猫一定是在这个值上连续的一段 然后计算出如果一个人选\([l,r]\),等待时间到达每个猫的时间减去到个猫最小的时间,是\(c_r*(r-l+1)-(s…
luogu翻译 一些山距离起点有距离且不同,m只猫要到不同的山上去玩ti时间,有p个铲屎官人要去把所有猫接走,步行速度为1单位每秒,从1走到N座山不停下,必须在猫玩完后才可以把他带走.可以提前出发.问所有猫最少等待时间之和. 这题一开始有个模糊想法就是$f[i][j]$表示前i个人接j只猫,但是猫是乱序的,必须找一种方法顺序的dp.想到排序.但是排时间抑或是距离都不对,要考虑优先接哪个.然后瞎想到每只猫可以让人在$T_i-dis_i$时刻从起点出发正好接到不用等,那接一堆猫等待时间取决于要求出发…
HDU3507 Print Article Zero has an old printer that doesn't work well sometimes. As it is antique, he still like to use it to print articles. But it is too old to work for a long time and it will certainly wear and tear, so Zero use a cost to evaluate…
标 * 的是推荐阅读的部分 / 做的题目. 1. 动态 DP(DDP)算法简介 动态动态规划. 以 P4719 为例讲一讲 ddp: 1.1. 树剖解法 如果没有修改操作,那么可以设计出 DP 方案 \(f_{i,0/1}\) 分别表示不选(\(0\))/ 选(\(1\))点 \(i\) 的最大权值,那么有 \(f_{i,0}=\sum_{x\in S_i}\max(f_{x,0},f_{x,1}),f_{i,1}=v_i+\sum_{x\in S_i}f_{i,0}\). 如果加上修改操作,那…
一.预备知识 \(tD/eD\) 问题:状态 t 维,决策 e 维.时间复杂度\(O(n^{e+t})\). 四边形不等式: 称代价函数 w 满足凸四边形不等式,当:\(w(a,c)+w(b,d)\le w(b,c)+w(a,d),\ a < b < c < d\) 如下所示,区间1.2对应的 w 之和 ≤ 3.4之和 \[ \underbrace {\overbrace {a \to \underbrace{b \to c}_3}^1 \to d }_4 \llap{\overbrac…
不想写什么详细的讲解了...而且也觉得自己很难写过某大佬(大米饼),于是建议把他的 blog 先看一遍,然后自己加了几道题目以及解析...顺便建议看看算法竞赛(蓝皮书)的 0x5A 斜率优化(P294) 部分 这是——大米饼大佬 看完了大米饼同志对斜率优化的介绍,下面我来稍微讲讲对斜率优化dp 的理解 前置知识 单调队列(栈) 平面直角坐标系 直线解析式 等式处理 dp状态设计 balabala...... 理解 其实斜率优化 dp 的原理很简单: 根据题目(斜率优化 dp 的题目一般都很裸)的…
CF311B Cats Transport 暑假到现在终于过了这道题…
前言 为了不久之后的\(NOIP2018\),我们的停课从今天(\(Oct\ 24th\))起正式开始了. 本来说要下周开始的,没想到竟提早了几天,真是一个惊喜.毕竟明天有语文考试.后天有科学考试,逃过了一劫. 这篇博客记录的便是停课这段时间的经历. 当然,这篇博客中有许多空链接,请谅解. \(Oct\ 24th\) 上午 一场\(NOIP2018\)线下模拟赛,\(AC\)了\(T1\)和\(T3\),\(T2\)悲惨爆\(0\)... .. 下午 花了一个下午写一道\(KD-Tree\)板子…
颓了差不多一周后,决定重开DP 这一周,怎么说,学了学trie树,学了学二叉堆,又学了学树状数组,差不多就这样,然后和cdc一番交流后发现,学这么多有用吗?noip的范围不就是提高篇向外扩展一下,现在向下推进度,该不会写题还是不会,水平能有什么提高,应该老老实实看完DP的所有内容和图论的基本内容,再学学数学,写写oj的题,大概暑假前就干这个吧,累的时候可以去看看莫队和CDQ 然后宣布现在DP内容记录在本章 环形与后效性的处理 例题*1 poj2228 题意:将一天分为N小时,每小时都有一个价值w…
前言 斜率优化\(DP\)是难倒我很久的一个算法,我花了很长时间都难以理解.后来,经过无数次的研究加以对一些例题的理解,总算啃下了这根硬骨头. 基本式子 斜率优化\(DP\)的式子略有些复杂,大致可以表示成这样: \[f_i=min_{j=1}^{i-1}(A(j)-B(j)*S(i)+C(i))\] 其中\(A(j)\)和\(B(j)\)是两个只与\(j\)有关的函数,\(S(i)\)和\(C(i)\)是两个只与\(i\)有关的函数,式子中的\(min\)其实也可以替换成\(max\),但这里…
--DavidJing提供技术支持 现将今年7月份之前必须刷完的题目列举 完成度[23/34] [178/250] 第 1 章 贪心算法 √ [11/11] #10000 「一本通 1.1 例 1」活动安排 #10001 「一本通 1.1 例 2」种树 #10002 「一本通 1.1 例 3」喷水装置 #10003 「一本通 1.1 例 4」加工生产调度 #10004 「一本通 1.1 例 5」智力大冲浪 #10005 「一本通 1.1 练习 1」数列极差 #10006 「一本通 1.1 练习…
√√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 1.1 例 3」喷水装置 √√#10003 「一本通 1.1 例 4」加工生产调度 √√#10004 「一本通 1.1 例 5」智力大冲浪 √√#10005 「一本通 1.1 练习 1」数列极差 √√#10006 「一本通 1.1 练习 2」数列分段 √√#10007 「一本通 1.1 练习 3」线…