随笔分类 - 各种DP
摘要:传送门 显然考虑 dp,发现时间只和当前位置和攻击次数有关,设 F[i][j][k] 表示当前位置为 i,j ,攻击了 k 次得到的最大分数 初始 f[1][1][k] 为位置 1,1 能打到的前 k 大位置的分数和 每次移动都会多一行或多一列目标可以选择,攻击时显然优先
阅读全文
摘要:传送门 挺显然的 dp ,然鹅一开始想的是 dfs 乱剪剪枝搞了 70 分... 设 f[i][j] 表示切了 i 次,当前切的位置为 j 的最小误差 那么转移显然枚举上一个切的位置 k∈[0,j) ,有 $f[i][j]=min(f[i][j],f[i-1][k
阅读全文
摘要:A. Hotelier 题意:有十个位置初始为 0,三种操作,找到左边第一个空位,变成 1,找到右边第一个空位,变成 1,把某个位置变成 0 直接模拟.. #include<iostream> #include<cstdio> #include<algorithm> #include
阅读全文
摘要:传送门 感觉正着做不太好搞,考虑倒过来搞 容易想到贪心,每一层都贪心地选最小的宽度,然后发现 WA 了... 因为一开始多选一点有时可以让下一层宽度更小 然后有一个神奇的结论,最高的方案一定有一种是底层最窄的方案 证明: 考虑把所有块按顺序排成一排并分成几段,每一段都表示一层,假设如图是一种底层
阅读全文
摘要:传送门 可以想到 dp,设 f[i][j] 表示当前等级为 i,时间为 j 的最大滑雪次数 显然上课不会上让自己等级降低的课,所以第一维 i 满足无后效性 然后直接枚举 i,j,对于每个时间 j ,考虑选择滑雪,因为划不同的坡得到的价值都是 1,所以直接取当前能划的时
阅读全文
摘要:传送门 显然可以考虑 dp 设 f[i] 表示当前到了时间 i,从初始到 i 的时间都安排好打扫了 把所有牛按照区间 l,r 双关键字排序 这样枚举到一头牛 x 时,在 x.l 之前的牛都考虑完了(x.l 是牛 x 的左区间) 然后枚举 [x.l−1,x.r]
阅读全文
摘要:传送门 可以直接完全背包,复杂度 O(nlogn) 考虑另一种比较神仙的做法 设 f[i] 表示相加为 i 的方案数 考虑某个方案中加的最小的数 当 i 为奇数时,显然加的最小的数一定为 1,则 f[i]=f[i−1] 当 i 为偶数时,把加的最小的数分为 1
阅读全文
摘要:A. Drinks Choosing 有 n 个人,每个人各有一种最喜欢的饮料,但是买饮料的时候只能同一种的两个两个买(两个一对) 学校只打算卖 ⌈n2⌉ 对 这意味着有些学生喝不到最喜欢的饮料,求最多有多少学生能喝的最喜欢
阅读全文
摘要:传送门 看到组合数在模 2 意义下的乘积,考虑用 lucas 定理把组合数拆开 lucas 告诉我们,C(n,m) 在模 k 意义下的值,相当于 n,m 在 k 进制下每一位的组合数分别相乘的积在模 k 意义下的值 就是若 n=∑i=0a[i]ki,
阅读全文
摘要:传送门 显然可以列出 dp 方程按时间转移 发现数据 n 很小,K 很大,考虑矩阵快速幂优化转移 但是不同时间的转移似乎不一样 发现题目中单个鱼的移动有周期性,显然整体的移动也有周期性,发现个体的周期只有 2,3,4 所以整体移动的周期最多也只有 12,所以考虑把 12 步的
阅读全文
摘要:传送门 看题目一眼斜率优化,然后写半天调不出来 结果错误的 dfs 有 95 分?暴力 SPFA 就 AC 了? 讲讲正解: 显然是斜率优化的式子: 先不考虑 qsk 的贡献,设 f[i] 表示当前时间为 i 的最小代价 如果不考虑位置关系,有 $f[p_i]=f
阅读全文
摘要:传送门 显然可以状态转移: 设 f[k][x][y] 表示第 k 时刻,第一个人在 x ,第二个人在 y 时的概率 那么转移显然: f[k][x][y]+=∑u∑vf[k−1][u][v]∗(1−Pu)(1−Pv)/du[u]/du[v] 其中 u
阅读全文
摘要:传送门 01规划 01规划优质讲解:传送门 考虑先将每一科按 t/p 从小到大排序,枚举每一个 D(删除的考试数量) 显然一开始的成绩是 ∑ni=d+1t[i]∑ni=d+1p[i],设它为 st[D]/sp[D] 然后根据$
阅读全文
摘要:洛谷传送门 FJOI 日常原题 2333(似乎还不如 SDOI2012 任务安排 2333) 显然考虑 dp,这个是经典的把未来的代价先计算的 dp,然后才是斜率优化 一开始想状态时一直有一个时间维,然后就没法优化,考虑如何消掉这个时间维 可以发现,时间只和当前处理到的任务编号,和之
阅读全文
摘要:传送门 首先有一个显然的贪心,每次操作都要做到底,为了最优不会出现只卖一部分或者只买一部分的操作 所以设 f[i] 表示前 i 天得到的最大价值,那么对于每一个 i,枚举所有 j<i,意思就是第 j 天全部买入,第 i 天全部卖出 显然如果知道 f[j],那么就知道第 $
阅读全文
摘要:传送门 显然考虑 dp,设 f[i] 表示前 i 个牧场都被控制的最小代价 那么枚举所有 j<i ,f[i]=f[j]+val[i][j]+A[i] val[i][j] 表示控制站从 i 一直控制到 j+1 需要的代价 考虑怎么算这个东西,设 $S[i]=\sum _
阅读全文
摘要:传送门 首先容易证明,得分和切的顺序没有关系 所以直接默认先切左边再切右边就好了 然后显然可以 dp 一开始想的是设 f[i][j] 表示切了 i 次,此次把 j 和 j+1 分开,得到的最大价值 那么显然枚举上一次切的位置 k ,那么 $f[i][j]=f[i-1][k]+
阅读全文
摘要:传送门 考虑把总区间长度减去最多能减少的区间长度 把所有区间离散化,对每一小段计算贡献 分类讨论一波,对于边界 i,i+1 ,设它们之间距离 d,i 属于 x 考察队的边界,i+1 属于 y 考察队的边界: i 为左边界,i+1 为左边界,显然如果给 x 钥匙就可
阅读全文
摘要:传送门 显然不能直接考虑图长什么样 考虑如何构造一个图,让一个 B 序列尽可能合法 发现对于一些点,如果能让它们先弱联通,(一个节点指向下一个节点,形成一条链) 那么对于最后一个节点,它想缩几个联通块都行,可以证明,这样可以包括所有其他情况形成的 B 序列 感性理解因为这样可以消耗最少的边来
阅读全文
摘要:传送门 A.The Doors 看懂题目就会写的题 给一个 01 序列,找到最早的位置使得 0 或 1 已经全部出现 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cm
阅读全文