摘要: 【算法】简单数学 【题解】多项式展开:(a*b)%p=(a%p*b%p)%p #include<cstdio> #include<algorithm> #define rep(i,j,k) for(int i=j;i<=k;i++) using namespace std; int n,p; int 阅读全文
posted @ 2017-05-24 19:24 ONION_CYC 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 【算法】经典DP 【题解】经典lcs,输出路径可以记录上一个有效节点就是有点麻烦。 因为开始时写法不太明确,打印结果时初始循环地方搞错了,后来修正写法时忘了改过来,调了好久。 #include<cstdio> #include<algorithm> #include<cstring> #define 阅读全文
posted @ 2017-05-24 19:16 ONION_CYC 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 【GDB调试】 用bat避免路径问题 :a g++ cyc.cpp -g -Wall -o cyc -m32 gdb32 cyc.exe pause goto a 开O2在调试中容易出现奇怪错误,尽量不要开! 常用命令: help info 输出所有cmd指令 r 运行 b 100 在100行前设置 阅读全文
posted @ 2017-05-22 14:17 ONION_CYC 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 【算法】三分+贪心 【题解】 数据范围小的版本:餐巾计划 这题不是使用最小费用流的下凸函数,因为这题是要满足最大流,那么这题到底在三分什么? 三分的这个函数,其实是总费用随卖出玩具量变化而变化的函数,此时的流量一直是满流的。可以想象一下,当卖出玩具的流量在总流量中占比小时,许多都得洗,花费巨大;继续 阅读全文
posted @ 2017-04-27 10:01 ONION_CYC 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 【算法】树链剖分+线段树(区间加值,区间求和) 【题解】http://hzwer.com/3891.html 中间不要取模不然相减会出错。 血的教训:线段树修改时标记下传+上传,查询时下传。如果修改时标记不下传,下面的结果就会覆盖上面的标记上传造成的影响。 读入后全部排序(离线处理) 链剖之后按顺序 阅读全文
posted @ 2017-04-23 00:03 ONION_CYC 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 【算法】插头DP 【题解】蓝书原题 动态规划 [原创]插头DP小结(ACM by kuangbin) #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int MAXD=15; cons 阅读全文
posted @ 2017-04-21 19:30 ONION_CYC 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 【算法】最小费用最大流 【题解】跟滑雪略有类似,同样因为可以重复所以不是最小路径覆盖。 连向汇的边容量为1足矣,因为一个点只会出去一次(路径结束)。 bzoj 1927 [Sdoi2010]星际竞速 留坑 阅读全文
posted @ 2017-04-18 21:55 ONION_CYC 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 【算法】有源汇上下界最小费用可行流 【题解】上下界 因为上下界相同,所以无所谓最小流了,可行流(初始流+附加流)就是答案了。 记得源点向新建节点连一条容量为m(人)的边。 bzoj 2055 80人环游世界 阅读全文
posted @ 2017-04-18 19:50 ONION_CYC 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 【算法】有源汇上下界最小流 【题解】上下界 初看以为是最小覆盖,发现边可以重复经过,不对。 要求所有边都经过……那就下界为1,上界为inf的可行流。 源汇……S连入度为0的点,T连出度为0的点?(反正不亏) 后来发现网上说S向所有点连,所有点向T连,想想似乎会快一些。 最后……要求最小就最小流咯。 阅读全文
posted @ 2017-04-18 19:30 ONION_CYC 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 【算法】二分+有源汇上下界可行流 【题解】上下界 题解参考:[BZOJ2406]矩阵(二分+有源汇有上下界的可行流) #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int inf=0 阅读全文
posted @ 2017-04-18 16:54 ONION_CYC 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 【算法】二分+spfa 【题解】据说这个叫分数规划? 0-1分数规划 二分答案a,则对于任意的环有w/k≤a即w-ak≤0,若满足条件则a变小,否则a变大。 因为w=w1+w2+...+wk,所以变形为(w1-a)+(w2-a)+...+(wk-a)≤0。于是问题转化为在图中找负环。 不过由于spf 阅读全文
posted @ 2017-04-17 15:25 ONION_CYC 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 算法:网络流 题目:网络流24题(多按一下F5) 【最小路径覆盖问题】 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意。 mark记录有入度的右侧点,然后从没入度的右侧点开始把整条路径输出来即可。 #include<cstdio> #inc 阅读全文
posted @ 2017-04-16 21:58 ONION_CYC 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 【题目】#6003. 「网络流 24 题」魔术球 【算法】最小路径覆盖(详细知识参考网络流总结) 【题解】(i+j)为完全平方数则连边,那么问题转化为添加尽可能多的点使得最小路径覆盖≤n(一条简单路径表示一根柱子) 从1开始枚举答案,每次可以直接在上一次的残余网络上建边增广(二分不优),直到最小路径 阅读全文
posted @ 2017-04-16 21:46 ONION_CYC 阅读(849) 评论(0) 推荐(3) 编辑
摘要: 【题目】1738: 最小路径覆盖问题 【题解】网络流 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意。 mark记录有入度的右侧点,然后从没入度的右侧点开始把整条路径输出来即可。 #include<cstdio> #include<algo 阅读全文
posted @ 2017-04-15 09:01 ONION_CYC 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 【算法】数位DP 【题解】参考题解 记忆化搜索挺好写的,而且比DP+递推快。 大概思路是记录h(高度),pre(前一位数字),limit(限制)。 从根往叶子走,limit=0时,扫0~9判断符合条件就递归。 limit=1时,也就是当前位于n上,只能扫0~end-1,end就要limit=1来递归 阅读全文
posted @ 2017-04-14 13:43 ONION_CYC 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 【算法】数位DP 【题解】动态规划 题目要求的是大整数……没办法只写了小数字的,感觉应该没错。 大题框架是最大值最小化的二分问题。 对于每一块要求count(b)-count(a-1)≥s 已知a如何计算b?令now=count(a-1)+s,求的就是满足count(b)≥now的最小b了。 虽然看 阅读全文
posted @ 2017-04-13 22:01 ONION_CYC 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 【算法】数位DP 【题解】动态规划 写了预处理函数却忘了调用是一种怎样的体验? #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int f[35][35]; void init() { f[0][ 阅读全文
posted @ 2017-04-13 17:03 ONION_CYC 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 【算法】(manacher+贪心)||(manacher+DP+树状数组/线段树) 【题解】 manacher求回文串,后得到线段,做一点计算映射回原串线段。 然后问题转化为可重叠区间线段覆盖问题,可以贪心解决。 排序左端点,同一左端点取最长段,然后在此段中找到右端点最靠右的线段,线性更新并累加。 阅读全文
posted @ 2017-04-05 21:19 ONION_CYC 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 【算法】manacher 【题解】【算法】字符串 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=300010; int n,p[maxn]; char s[maxn 阅读全文
posted @ 2017-04-05 19:16 ONION_CYC 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 【算法】后缀数组 【题解】后缀数组 由于m太大,先离散化。 然后处理SA和LCP。 最后用单调队列处理即可。 注意实际上队列头尾长度限制是K-1. 删队尾不要删过头 i≥K才能开始统计答案。 #include<cstdio> #include<algorithm> #include<cstring> 阅读全文
posted @ 2017-04-03 16:36 ONION_CYC 阅读(211) 评论(0) 推荐(0) 编辑