摘要:假如F[1] = a, F[2] = B, F[n] = F[n - 1] + F[n - 2]。写成矩阵表示形式可以很快发现F[n] = f[n - 1] * b + f[n - 2] * a。 f[n] 是斐波那契数列也就是我们如果知道一段区间的前两个数增加了多少,可以很快计算出这段区间的第k个...
阅读全文
摘要:http://www.cnblogs.com/tedzhao/archive/2008/11/12/1332112.html看这篇的链表部分的介绍应该就能理解“可持久化”了动态分配内存的会T,只能用静态#include #include #include #include #include usin...
阅读全文
摘要:按第一关键字排序后枚举中位数,就变成了判断“左边前K小的和 + 这个中位数 + 右边前K小的和 #include #include #include #include using namespace std;struct node{ node *ch[2]; int sz; int...
阅读全文
摘要:模板题,找来测代码。注意有相同单词//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#inc...
阅读全文
摘要:两条路不能有重边,既每条边的容量是1。求流量为2的最小费用即可。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#incl...
阅读全文
摘要:划分成两个集合使费用最小,可以转成最小割,既最大流。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#in...
阅读全文
摘要:饮料->牛->食物。牛拆成两点。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#incl...
阅读全文
摘要:每个门每个时间只能出一个人,那就把每个门拆成多个,对应每个时间。不断增加时间,然后增广,直到最大匹配。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#i...
阅读全文
摘要:以行列为点建图,每个点(x,y) 对应一条边连接x,y。二分图的最小点覆盖=最大匹配//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#in...
阅读全文
摘要:#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#includ...
阅读全文
摘要:排序后贪心或根据第二关键字找最长下降子序列#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#i...
阅读全文
摘要://#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#incl...
阅读全文
摘要:二分答案,2sat判定。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#...
阅读全文
摘要:每个工厂拆成N个工厂,费用分别为1~N倍原费用。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#incl...
阅读全文
摘要:题目给了一个满足最大流的残量网络,判断是否费用最小。如果残量网络中存在费用负圈,那么不是最优,在这个圈上增广,增广1的流量就行了。1.SPFA中某个点入队超过n次,说明存在负环,但是这个点不一定在负环上。2.这个负环可能包括汇点t,所以构建残量网络的时候也要考虑防空洞到t上的容量。//#pragma...
阅读全文
摘要:裸差分约束。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#includ...
阅读全文
摘要:一道实现很蛋疼的题。必须静下理清思路,整理出各种情况。不然就会痛苦地陷入一大堆if..else里不能自拔。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#i...
阅读全文
摘要:f[i][j]=f[i-j][j]+f[i][j-1],结果很大需要高精度。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#includ...
阅读全文
摘要:dp[i][j]表示前i种蚂蚁组成元素个数为j的集合有多少种。则dp[i][j] = dp[i-1][j] + dp[i-1][j-1] + ... + dp[i-1][ max(0,j-a[i])];直接算的话复杂度为O(TA^2)状态的转移是一个区间内的数的和,所以再用一个数组f[i][j]记录...
阅读全文
摘要:dp[i][j]表示前i种硬币中取总价值为j时第i种硬币最多剩下多少个,-1表示无法到达该状态。a.当dp[i-1][j]>=0时,dp[i][j]=ci;b.当j-ai>=0&&dp[i-1][j-ai]>0时,dp[i][j]=dp[i-1][j-ai]-1;c.其他,dp[i][j]=-1So...
阅读全文