随笔分类 -  H-动态规划=================

摘要:Link: 传送门 Solution: 组合数的式子都可以先想想能不能递推,写出来就是: $\sum C_{n*k}^{i*k+r}=\sum C_{n*k-1}^{i*k+r}+\sum C_{n*k-1}^{i*k+r-1}$ 如果将每个求和看成一个整体,设$dp[n][r]=\sum C_{n 阅读全文
posted @ 2018-11-23 19:38 NewErA 阅读(210) 评论(0) 推荐(0)
摘要:感觉前面做了那么多$dp$全是自己想的还是太少啊…… 好像在LZT的博客上看到了不错的资源?赶紧开坑,以一句话题解为主 Codeforces 419B 第一题就开始盗图 由于只有一个交点,手玩一下发现两人的路径可以分为四块区域,且只有两种情况: 预处理四个方向的最长距离,枚举相交点即可 FZU 22 阅读全文
posted @ 2018-10-31 13:34 NewErA 阅读(765) 评论(1) 推荐(0)
摘要:Link: 传送门 代码量很少的一套思维题 A: 试一试发现最后状态一定是所有$min,max$间$gcd$的倍数 直接判断数量的奇偶性即可 #include <bits/stdc++.h> using namespace std; #define X first #define Y second 阅读全文
posted @ 2018-10-11 17:35 NewErA 阅读(218) 评论(0) 推荐(0)
摘要:Link: 传送门 Solution: 原来CF的官方题解也能鸽啊…… 详细题解 该题思路: 1、对于每个点删边方案数为$fac[n-1]$,总贡献为每种方案下满足的概率的和,接下来直接求贡献 2、每次将该点看成根,树形$dp$,设$dp[i][j]$表示根到$i$该子树还有$j$条边的贡献 3、考 阅读全文
posted @ 2018-10-08 16:01 NewErA 阅读(524) 评论(0) 推荐(0)
摘要:Link: Codeforces #514 传送门 很简单的一场比赛打崩了也是菜得令人无话可说…… D: 一眼二分,发现对于固定的半径和点,能包含该点的圆的圆心一定在一个区间内,求出区间判断即可 此题一个重要性质就是圆与$x$轴相切,画出圆心所在直线后就能想到上述贪心了 #include <bits 阅读全文
posted @ 2018-10-08 10:01 NewErA 阅读(169) 评论(0) 推荐(0)
摘要:Link: 传送门 A: 套路题结果想了好久…… 排序二叉树的性质就是中序遍历单调递增 于是只考虑当前树的中序遍历的序列即可,与树的形态无关 将序列改成严格单调增想到最大化不变的数,但直接LIS求的是改为非严格单调增的数 一个将严格单调增问题改为非严格的套路是将数$a_i$替换成$a_i-i$,对转 阅读全文
posted @ 2018-09-18 15:39 NewErA 阅读(254) 评论(0) 推荐(0)
摘要:Link: 传送门 A: 分层图最短路(其实就是最短路转移时多记录一维的数据 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef double db; typedef long 阅读全文
posted @ 2018-09-13 09:28 NewErA 阅读(249) 评论(0) 推荐(0)
摘要:Link: 传送门 A: 按值大小插入后用树状数组统计两边个数 #include <bits/stdc++.h> using namespace std; #define X first #define Y second #define pb push_back typedef double db; 阅读全文
posted @ 2018-09-13 09:13 NewErA 阅读(196) 评论(0) 推荐(0)
摘要:Link: 传送门 A: 贪心从小到大插入,用并查集维护连通性 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef double db; typedef long long ll 阅读全文
posted @ 2018-09-09 22:25 NewErA 阅读(218) 评论(0) 推荐(0)
摘要:Link: USACO 2018 Feb Gold 传送门 A: $dp[i][j][k]$表示前$i$个中有$j$个0且末位为$k$的最优解 状态数$O(n^3)$ #include <bits/stdc++.h> using namespace std; #define X first #def 阅读全文
posted @ 2018-09-07 10:07 NewErA 阅读(194) 评论(0) 推荐(0)
摘要:Link: ARC 066 传送门 C: 如果存在可行方案则答案为$2^{n/2}$ #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typede 阅读全文
posted @ 2018-08-28 14:31 NewErA 阅读(191) 评论(0) 推荐(0)
摘要:Introduction 每次在一开始为空的串$S$的任意位置插入串$p$ 给出最终的$S$,求长度最短(相同时字典序最小)的串$p$ Solution: 样例出锅差评啊,让我这种直接看样例选手挂掉50分啊…… 所以说不管怎么样都要好好看输入/输出格式,看看有没有多测 非常直观的思路就是$O(len 阅读全文
posted @ 2018-08-26 16:28 NewErA 阅读(460) 评论(0) 推荐(2)
摘要:Link: Codeforces #172 传送门 A: 一眼看上去分两类就可以了 1、每个矩形只有两条边相交,重合的形状为菱形 2、每个矩形四条边都有相交 对于情况1答案为$h*h/sin(a)$ 对于情况2可以列出一个二元一次方程组,手动解一下就好了 不过计算几何确实容易写挂啊…… 有几个注意点 阅读全文
posted @ 2018-08-25 16:54 NewErA 阅读(272) 评论(0) 推荐(0)
摘要:Link: Codeforces #174 传送门 A: 求原根的个数,有一条性质是原根个数为$\phi(\phi(n))$,多了一个不会证的性质 如果要确定哪些是原根的话还是要枚举,不过对于每个数不用枚举$p$次了 由于$\delta_p(x) | \phi(x)$,只要对欧拉函数值的约数枚举即可 阅读全文
posted @ 2018-08-21 22:37 NewErA 阅读(132) 评论(0) 推荐(0)
摘要:Link: BZOJ 3140 传送门 Solution: 挺好的一道暴力题 首先发现可以每次贪心选择宽度为1的一面,即$1*x*y,1*x*z,1*y*z$ 那么对于与该面垂直的面,相当于解决了一行/一列 于是我们可以先考虑一个二维问题: 每次选取一行/一列要耗费一个代价,询问要覆盖所有染色点需要 阅读全文
posted @ 2018-07-22 22:30 NewErA 阅读(160) 评论(0) 推荐(0)
摘要:Link: P1273 传送门 Solution: 比较裸的树形$dp$ 令$dp[i][j]$表示以$i$为根的子树中选$j$个叶子的最小代价 最后找到使得$dp[1][k]\ge 0$的最大$k$即可 Code: 阅读全文
posted @ 2018-07-22 22:09 NewErA 阅读(233) 评论(0) 推荐(0)
摘要:Link: BZOJ 1855 传送门 Solution: 比较明显的$dp$模型 令$dp[i][j]$为第$i$天持有$j$支股票时的最大利润 对其购买股票和售出股票分别$dp$,这里以购买为例: $dp[i][j]=max\{ dp[lst][k]-ap*(j-k)\}$ 发现可以将递归式转化 阅读全文
posted @ 2018-07-18 22:38 NewErA 阅读(218) 评论(0) 推荐(0)
摘要:Link: BZOJ 1076 传送门 Solution: 数据范围就是题解 能比较明显看出是一道期望+状压的题目 一开始想正向推公式,结果发现每一阶段的答案并不符合后项无关性…… 其实在题面中就有所提示,当前的最优解并不一定是总的最优解 这种情况下可以考虑反向$dp$来保证最优解 其中$dp[i] 阅读全文
posted @ 2018-07-18 22:09 NewErA 阅读(150) 评论(0) 推荐(0)
摘要:Link: BZOJ 2298 传送门 Solution: 可以将每个人的话转化为$[l[i],r[i]]$的人得分相同 用$map$记录认为$[i,j]$相同的人数,$pos[i][j]$记录以$i$为右边界的左边界的可能取值 令$dp[i]$表示前$i$名中说真话的最多人数, 那么$dp[i]= 阅读全文
posted @ 2018-07-18 16:46 NewErA 阅读(152) 评论(0) 推荐(0)
摘要:Link: BZOJ 3326 传送门 Solution: 明显是一道数位$dp$的题目,就是递推式复杂了点 先要求出一个数$\bar{n}$向添加一位后的$\bar{np}$的转化关系 令$res[\bar{n}]$为数$n$的权值和, 则$res[\bar{np}]=res[\bar{n}]+\ 阅读全文
posted @ 2018-07-17 17:35 NewErA 阅读(257) 评论(0) 推荐(0)