摘要: - [P3410 拍照] Solution- [P4744 [Wind Festival] Solution- [P2765 魔术球问题] Solution- [P2711 小行星] Solution- [P4055 [JSOI2009]游戏](https://www.luogu.com.cn/pr 阅读全文
posted @ 2020-03-03 15:32 syzf2222 阅读(468) 评论(2) 推荐(1) 编辑
摘要: 求最大连通块…… #include<bits/stdc++.h> using namespace std; const int maxn=1e7+10; const int maxm=2*1e5+10; int vis[maxn]; int beg[maxn],nex[maxn],to[maxn], 阅读全文
posted @ 2020-03-02 09:35 syzf2222 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 计算每个点的入度。 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int vis[maxn],rd[maxn]; int top; int main(){ int x,y; while(1){ scanf("% 阅读全文
posted @ 2020-03-02 09:03 syzf2222 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 题意:判断给出的图是否为一棵树。 并查集的简单应用。 注意判断是否是一张空图。 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int vis[maxn],fa[maxn]; int find(int x){ i 阅读全文
posted @ 2020-03-01 10:35 syzf2222 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 这题有些不一样,睁大眼睛看题,发现不用连续地取,那么我们就可以预处理一下。 把h从大到小排个序,然后从前往后扫一遍,如果当前的这片土地的w值不比前面的最大值大,那么他就可以被包含,无贡献。 这时我们取出了一个h递减,w递增的数列,这时取就必须连续了。 递推式长这样:f[i]=f[j]+b[i].w* 阅读全文
posted @ 2020-02-29 22:58 syzf2222 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 这道题不太一样了。通过费用提前可以推倒递推式长这样:f[i]=min{f[j]+sumt[i]*(sumc[i]-sumc[j])+s*(sumc[n]-sumc[j])} 写成一次函数形式长这样:f[j]=(s+sumt[i])*sumc[j]+f[i]-sumt[i]*sumc[i]-s*sum 阅读全文
posted @ 2020-02-29 22:57 syzf2222 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 虽然又是一遍AC的,但不得不说这题打得我好慌张,还调了十几分钟,虽然都是智障错误。 回归正题。猛然一看,n只有3000,貌似不要斜率优化耶。 但事实上,普通DP是N^2*M的,所以还是得斜率优化哈哈。 构造数列A1~Am,表示第i段的和。 方差乘m^2后长这样子:m*Ai^2-(Ai)^2 惊喜的发 阅读全文
posted @ 2020-02-29 22:55 syzf2222 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 这是我斜率DP第一个没有一遍AC的,原因是第一遍忘开long long了。 这一题比较特殊,细心的同学一定发现了,递推式不带f。 为了方便,设d数组的后缀和为sd[i]=sd[i+1]+d[i],设k数组的前缀和为sk[i]=sk[i-1]+k[i](k[i]即是题目中的w[i]) 设f[i]为第二 阅读全文
posted @ 2020-02-29 22:54 syzf2222 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 这题不像前面那样板子了,至少我不认为它是个板子。 推出的方程长这样子:f[j]+a*sum[j]^2-b*sum[j]=(2*a*sum[i])*sum[j]+f[i]-a*sum[i]^2-b*sum[i]-c 看一下数据范围,a恒为负,这时斜率2*a*sum[i]单调递减,同时我们要求截距的最大 阅读全文
posted @ 2020-02-29 22:53 syzf2222 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 容易想到,我们必须在最低点也就是第n个点建设一个仓库。由此想到这样设状态:f[i]表示仅处理1~i的工厂的最小花费。 找到一个j<i,在j处建工厂,从j+1到i-1的都运到i处,那么推出状转方程:f[i]=min{f[j]+c[i]+p[k]*(x[i]-x[k])},k从i+1到j-1 预处理两个 阅读全文
posted @ 2020-02-29 22:52 syzf2222 阅读(211) 评论(0) 推荐(0) 编辑