01 2017 档案
codeforces 671D
摘要:这题真神了……没想到链的问题还可以转化为子树解……一开始总以为是树链剖分…… 我们可以先把问题转化为每条边只能被一个工人修复一次,可以证明这样答案不会更优也不会更差 设f[i]表示覆盖了i节点子树的所有边都被覆盖且i的父向边也被覆盖的最小花费 我们可以把工人修复转化为“头加尾减”,即在u[i]处添加 阅读全文
posted @ 2017-01-28 23:47 acphile 阅读(472) 评论(0) 推荐(0)
codeforces 671C
摘要:题意定义f(l,r)为去掉[l,r]部分后剩下的数任意两个数的最大公约数的最大值 现在求f(l,r)的和 由于每个数ai最大只有200000,因此我们穷举因子x,记录以其为因子的a[i]的i值并按i升序。 下面我们从大到小穷举每个因子x,我们依次计算以f(l,r)=x的区间数, 有了上述的维护信息, 阅读全文
posted @ 2017-01-28 23:32 acphile 阅读(320) 评论(0) 推荐(0)
zoj3256
摘要:好题,由m的范围知道这肯定是矩阵乘法加速插头dp,关键是怎么写 以往插头dp常用逐格递推,而这道题要求整行逐列递推 这样我们才能构造转移矩阵。 我们可以通过假象一个第0列来将路径转化为回路问题 逐列递推依然使用最小表示法,维护这一列每个格子向右的插头的连通性(最小表示法) 我们可以通过已知状态不断扩 阅读全文
posted @ 2017-01-28 22:32 acphile 阅读(233) 评论(0) 推荐(0)
hit2739
摘要:好题,回路的问题一般都要转化为度数来做若原图的基图不连通,或者存在某个点的入度或出度为0则无解。统计所有点的入度出度之差di对于di>0的点,加边(s,i,di,0);对于di<0的点,加边(i,t,-di,0);对原图中的每条边(i,j),在网络中加边(i,j,inf,边权),最小费用流的解加上原 阅读全文
posted @ 2017-01-23 22:15 acphile 阅读(228) 评论(0) 推荐(0)
hdu5737
摘要:首先思考一个朴素的做法 将b[]维护成一个线段树套有序表,每次修改a[]用线段树+lazy tag 并在线段树的子区间上在有序表中二分更新这段区间中a[i]>=b[i]的值,复杂度O(nlog^2) 有没有更优的做法? 考虑在一次修改操作中,查询的数是相同的,并且b[]这个有序表始终不变 因此在生成 阅读全文
posted @ 2017-01-23 22:02 acphile 阅读(262) 评论(0) 推荐(0)
2017.1其他简要题解
摘要:期末考试结束又到了做题的时候了 hdu5964 大胆推出公式,发现面积可以转换为两个互相独立的参数函数…… 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 typedef long long ll; 5 ll a,b,c,d; 6 ll m 阅读全文
posted @ 2017-01-07 22:54 acphile 阅读(266) 评论(0) 推荐(0)
hdu5967
摘要:看到合肥赛区的题目都是泪啊,期末考完了来补几道 公正来说,这道题我考场确实写不出来,因为我的lct模板不够完美…… 我在学习lct的时候不知道为什么代码里加边、删边都是用了一个makeroot的操作 这样我的lct就只能维护无根树而不能维护有根树 但事实上,lct是完全可以维护像这道题有向基环外向树 阅读全文
posted @ 2017-01-07 22:47 acphile 阅读(404) 评论(0) 推荐(0)