上一页 1 2 3 4 5 6 7 8 ··· 18 下一页
摘要: 状压dp。 500分解质因数的话,除了最大的质因数只需要8个质数,用二进制x储存,最大的质因数用y来储存(若没有比那8个质数大的质因数就使y=1) 用f[i][j]表示第一个人方案为i,第二个人方案为j时的方案数。 递推时用p[0/1][i][j]表示第1/2个人选当前数,i和j分别为两人方案时的方案数。 有f[i][j]=(p[0][i][j]+p[1][i][j]-f[i][j])%m... 阅读全文
posted @ 2016-07-07 13:52 invoid 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 费用流加动态建点。 考虑加的点是倒数第几个做的菜,它对答案的共享就是i倍的时间。 和bzoj1070修车那道题一样。 #include #include #include using namespace std; const int maxk = 100 + 10; const int maxn = 10000 + 10; const int maxm = 2000000 + 10; ... 阅读全文
posted @ 2016-07-06 18:20 invoid 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 树形dp。 好坑的dp。不会。 f[i][j][k]表示第i件装备和它的基础装备一共花费j个金币且向上提供j个装备时能取得的最大的力量值。 #include #include #include using namespace std; const int maxn = 100 + 10; const int maxm = 2000 + 10; int g[maxn],v[maxm],n... 阅读全文
posted @ 2016-07-06 15:53 invoid 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 数论综合。费马小定理,lucas定理,中国剩余定理,exgcd,快速幂,乘法逆元。 首先要计算出n的每个约数,简单的sqrt(n)枚举即可。 然后计算C(i,m)(m个中挑i个的组合数,ps:因为网上正反俩种都有,所以标注一下。。) 设s=sum(C(i,m)) 题目要求g^(s)%mod, 由费马小定理得 g^(s)=g^(s%(mod-1))。所以这里需要特判一下g是否等于mod。 ... 阅读全文
posted @ 2016-07-05 22:47 invoid 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 斜率优化+树分治。 点分治:找出当前子树的重心,分治根到重心这一段,更新根到重心这一段的值,将剩下的点按能到达的高度从低到高排序,更新。分治其他子树。 阅读全文
posted @ 2016-07-05 11:45 invoid 阅读(141) 评论(0) 推荐(0) 编辑
摘要: LCT. 将边按a从小到大排序后不断往进加,出现环就把b最大的边去除掉。 lct中边也要单独建一个节点保存边权。 #include #include #include using namespace std; const int maxn = 200000 + 10; const int maxm = 800000 + 10; const int inf = 0x7f7f7f7f; ... 阅读全文
posted @ 2016-07-04 14:15 invoid 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 高精度+排列组合。 如果计算老师能挨在一起的情况 有 (n+2)! * A(n+3,m) 老师一定挨宰一起的情况 有 2*(n+1)!*A(n+2,m)。 相减就是答案。 #include #include #include using namespace std; const int maxn = 3000; const int mod = 10000; struct bigin... 阅读全文
posted @ 2016-07-04 01:14 invoid 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 卡特兰数。 这道题打下表可以看出前几项是卡特兰数(怎么想到打表和卡特兰数?我事先看了题解,为了确认一下。) 因为p不是质数,所以不能用乘法逆元。 我们可以把C(2*n,n)/(n+1)的每一项分解成一个质数,然后乘,这样就可以了。 #include #include #include #define LL long long using namespace std; const i... 阅读全文
posted @ 2016-07-03 23:29 invoid 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 容斥原理。 先求出所有只含6和8而且不是其他数的倍数的数。 然后进行容斥dfs,小心爆long long。 #include #include #include using namespace std; typedef long long LL; const int maxn = 30000 + 10; LL a,b,cnt,n; LL lucky[maxn]; bool fl... 阅读全文
posted @ 2016-07-03 11:04 invoid 阅读(136) 评论(0) 推荐(0) 编辑
摘要: bfs+最小树形图+kruskal算法。 最小树形图形象地来说就是有向图的最小生成树,这个不能拿kruskal算法或者是prim算法直接求,否则会错。 就是w[u][v]!=w[v][u]的情况。 而这道题用朱刘算法肯定是行不通的。 但是这道题的有向边并不是边的性质,而是点的高度决定的。这样我们就可以分层求最小生成树。 如果加进高度为h的点,只需用kruskal算法选最短的边就可以了,而... 阅读全文
posted @ 2016-07-02 20:30 invoid 阅读(325) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 18 下一页