上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 18 下一页
摘要: 二分图最小权完美匹配。 一个最小费用流就能跑了,记住检查一下,容量是否跑满,如果没有跑满,就说明没有完美匹配。 #include #include #include using namespace std; const int maxn = 500+10; const int maxm = 50000 + 10; const int inf = 0x3f3f3f3f; int g[ma... 阅读全文
posted @ 2016-06-10 20:35 invoid 阅读(130) 评论(0) 推荐(0) 编辑
摘要: dp. 首先我们可以看到每个时间段只能往一个方向转移最多t步(t为时间段的长度),所以我们可以按时间段dp。因为这个前后值互不影响,也不用占用这一维空间就可以省去。 然后每个时间段内是一列一列(行) 进行递推。 如果朴素枚举是O(n^2)时间无法承受。所以每列(行)用一个单调队列维护dp,队首放着移动距离最大可以到达的点,这样复杂度就降到了O(n)。每次要递推n列(行)。所以总复杂度为O(k*... 阅读全文
posted @ 2016-06-10 18:47 invoid 阅读(716) 评论(0) 推荐(2) 编辑
摘要: 筛法,打表。 通过打表可知,但gcd(a,b)==a xor b时,a xor b = a-b. 就是求满足 c = a-b且c = a xor b 的c的个数。 #include #include #include using namespace std; const int maxn = 30000000; int ans[maxn+10]; int a,b,c,n; int T... 阅读全文
posted @ 2016-06-10 15:47 invoid 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 唯一分解定理。 挨个记录下每个质数的指数。 #include #include #include #include using namespace std; const int maxn = 100000 + 10; typedef long long LL; double ans; int p,q,s,t; bool mark[maxn]; int prime[maxn],cnt; ... 阅读全文
posted @ 2016-06-10 13:17 invoid 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 快速幂, 循环节,斐波那契数列 只是一个水水的题目,可以看出循环节是小于n^2的,所以先枚举出循环节。然后快速幂取模就可以了。 但要注意必须用unsigned long long,而且我用scanf读入还出现了意想不到的问题,所以只能用cin读入。 这是一个很大的坑点. #include #include #include using namespace std; const int... 阅读全文
posted @ 2016-06-10 10:31 invoid 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 扩展欧几里得。 枚举a,根据x1,x3和递推式可得。 (a+1)*b-k*mod=f[3]-a*a*b. 通过扩展欧几里得求出b. 带入原式进行计算。 #include #include #include using namespace std; const int maxn = 20000 + 10; const int mod = 10001; typedef long lo... 阅读全文
posted @ 2016-06-10 09:55 invoid 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 费用流。 裸的拆点最小费用流,一跑就行。 核弹预警,为何wa20多发。build函数一定要返回true。。。。。。 太可怕了 #include #include #include #include using namespace std; const int maxn = 5000 + 10 ; const int maxm = 200000 + 10; const int inf ... 阅读全文
posted @ 2016-06-10 08:52 invoid 阅读(116) 评论(0) 推荐(0) 编辑
摘要: lca。 3个点分别lca,可以知道,深度最深的lca就是答案。 #include #include #include using namespace std; const int maxn = 500000 + 10; const int maxm = 1000000 + 10; const int maxl = 22; int g[maxn],v[maxm],next[maxm],... 阅读全文
posted @ 2016-06-08 23:49 invoid 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 状压dp。 #include #include #include using namespace std; const int maxn = 12; int f[1<<maxn][1010],cnt[maxn],fac[maxn]; char s[maxn]; int T,d,N,n; int main() { fac[0]=1; for(int i=1;i<=10;i... 阅读全文
posted @ 2016-06-08 19:23 invoid 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 最小费用最大流。 这道题的特点在于每个修车的人所需要等待的时间要加上之前这个技术人员维修车的时间。 直观地我们可以每个技术人员建造n个点,费用分别为k*t(k=1,2,3…)(t为维修时间)。 但是这样很可能会超时,我们又发现,因为总共只有n个人来修车,我们每次用过每个修车人员后,再临时增加点,就可以避免浪费。 决策时,就变成了这个技术人员倒数第几个修这个车。 语言比较混乱,但这道题是好... 阅读全文
posted @ 2016-06-08 18:03 invoid 阅读(160) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 18 下一页