摘要: 每个长度为p的区间都必须出现k次1,数据又很小,我们使用状压。 dp[i][j]->dp[i+1][j'],dp[i][j]表示当前考虑到了第i个车站,包括第i个其后的p个的状态(有车停或没车停),其中j'为j中某一个车动一次到达的状态,为了防止复杂度爆炸,先dfs求一遍有用的状态。 然后矩阵转移。 阅读全文
posted @ 2018-01-18 21:03 湮灭之瞳 阅读(112) 评论(0) 推荐(0) 编辑
摘要: cdqppt地址:https://wenku.baidu.com/view/a2bf4ad9ad51f01dc281f1df.html; 代码实现参考的http://blog.csdn.net/u014609452/article/details/51447533; 这个代码实现还是很妙的,为了快速 阅读全文
posted @ 2018-01-18 16:50 湮灭之瞳 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 紫书上的一道题,做法见紫书P378,这篇博客用的第二种方法,关于正确性的证明,画图可以发现如果一个环是负环,跑最小费用流跑出的是环上的所有正边,再减去负边和即为跑一遍的负权,如果是正环,最小费用流即为负权和的相反数,再加上负权和即为0,即没有计入答案。可能这种方法在处理负权时有一定的普遍性,还是要多 阅读全文
posted @ 2018-01-17 21:40 湮灭之瞳 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 一看还以为要搞一个类似于数位dp的东西,然后还想不出来,一点没往别处想还是我太弱了。。。 我们把这题的过程看成字符串的匹配,那就是求匹配到最后还没匹配上的情况有多少种,我们可以考虑kmp的过程来dp计数; dp[i][j]=sum(dp[i-1][k]*cnt[k][j])(j,k<m),dp[i] 阅读全文
posted @ 2018-01-17 12:07 湮灭之瞳 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 先缩点,然后拆点,其实是很经典的一种操作,把不好做的点拆成边,然后我一开始想的是网络流,答案当然是增广次数, 但可以发现跑网络流的话不同的跑法增广次数不一样,不太好找最小的。我们可以换一种神奇的思路,跑最大费用流, 这样根据费用流每次都在最长路上增广保证每次都跑了尽量多的点,根据贪心原理可知这样是正 阅读全文
posted @ 2018-01-13 23:55 湮灭之瞳 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 今天学了最大权闭合子图。。然后找了这道题,发现完全不会。。。。。 看了题解发现这种有诸如选了一个就一定要选另外的一些的限制又要求最优值的题有的可以转化成最大权闭合子图, 这个题我们首先想到不会选相交的区间, 因为那样代价多算了一遍又不会增加价值。然后就是选一些区间,就有了一个经典的限制: 如果选了区 阅读全文
posted @ 2018-01-12 19:56 湮灭之瞳 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 参考题解:http://blog.csdn.net/yxuanwkeith/article/details/52254602 阅读全文
posted @ 2018-01-11 20:58 湮灭之瞳 阅读(153) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include using namespace std; typedef long long ll; const int mod=1000000007,maxn=3000000,p=2333333,N=5000000; const ll ni=500000004; int last[p],pre[p],cnt,phi[N+... 阅读全文
posted @ 2018-01-05 17:18 湮灭之瞳 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 学习地址:http://blog.csdn.net/yxuanwkeith/article/details/50636898 阅读全文
posted @ 2018-01-04 23:02 湮灭之瞳 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 区间旋转裸体,把一个区间翻转就是把这个区间对应的平衡树的所有节点的左右儿子交换(这个想想就明白了); 然后需要做的就是提取区间和打标记和传标记; 阅读全文
posted @ 2017-12-23 23:14 湮灭之瞳 阅读(143) 评论(0) 推荐(0) 编辑