10 2015 档案
摘要:dp(x)表示A机器用了x分钟, B机器的最少用时, 然后转移和背包类似-----------------------------------------------------------------------------#include#include#includeusing namespa...
阅读全文
摘要:15 #include#include#includeusing namespace std;const int maxn = 50009;const int n = 16;const int p[n] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 4...
阅读全文
摘要:求(0,0)->(n,m)且在直线y=x下方(可以在y=x上)的方案数...同http://www.cnblogs.com/JSZX11556/p/4908648.html----------------------------------------------------------------...
阅读全文
摘要:(0,0)->(n,m)方案数为C(n,n+m), 然后减去不合法的方案. 作(n,m)关于y=x+1的对称点(m-1,n+1), 则(0,0)->(m-1,n+1)的任意一条路径都对应(0,0)->(n,m)的一条不合法路径(y>x). 所以答案就是C(n,n+m) - C(n+1,n+m).高精...
阅读全文
摘要:day 11.生活大爆炸版石头剪刀布(rps)直接按照题意模拟即可#include#include#includeusing namespace std;const int maxn = 209;const int Mark[5][5] = {{0, 0, 1, 1, 0}, {1, 0, 0, 1...
阅读全文
摘要:求个LCS, 只是有了限制, 多加一维表示匹配到z串的第几个, 然后用滚动数组----------------------------------------------------------------------------#include#include#includeusing names...
阅读全文
摘要:hash一下, 把原矩阵所有A*B的子矩阵的hash值存在set里面, 然后对于每个询问就求出hash值, 在set中查找.------------------------------------------------------------------------#include#include...
阅读全文
摘要:dp(i)表示二进制的第i位为1时的最大值, 然后从左到右dp------------------------------------------------------------------------#include#include#includeusing namespace std;#de...
阅读全文
摘要:二分答案..然后从头到尾推一下, 看最后一个能不能取0个和第一个人相同的勋章-----------------------------------------------------------------------#include#include#includeusing namespace s...
阅读全文
摘要:黑白染成二分图, 然后不能同时选的就连边, 最大匹配数为m, t为不能放的数目, 则题目所求最大点独立集为 n*n-m-t-------------------------------------------------------------------------#include#include...
阅读全文
摘要:tarjan找割点..不是割点答案就是(N-1)*2, 是割点的话就在tarjan的时候顺便统计一下-------------------------------------------------------------------------------#include#include#incl...
阅读全文
摘要:二分答案, 然后用哈希去判断...-------------------------------------------------------------------------#include#include#include#includeusing namespace std;typedef ...
阅读全文
摘要:WA了一版...切点确定的话, 顺序是不会影响结果的..所以可以dpdp(i, k) = max(dp(j, k-1) + (sumn - sumi) * (sumi - sumj)) 然后斜率优化就可以了...--------------------------------------------...
阅读全文
摘要:tarjan求边双连通分量, 然后就是一棵树了, 可以各种乱搞...-------------------------------------------------------------------------------#include#include#includeusing namespa...
阅读全文
摘要:这是一个森林中, 每棵树上都有一个环...每棵树单独处理, 找出环上任意一条边断开, 限制一下这条边两端点的情况, 然后就可以树dp了..------------------------------------------------------------------------#include#...
阅读全文
摘要:按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值----------------------------------------------------------------------#includeusing namespace std;typedef long long ll;const...
阅读全文
摘要:二分答案就可以了....-----------------------------------------------------------------------#include#include#include#include#includeusing namespace std;typedef...
阅读全文
摘要:dp(x)表示前x个的最大值, Max(x)表示含有因数x的dp最大值. 然后对第x个数a[x], 分解质因数然后dp(x) = max{Max(t)} + 1, t是x的因数且t>=L---------------------------------------------------------...
阅读全文
摘要:WA了好多次...先tarjan缩点, 然后题意就是求DAG上的一条最长链. dp(u) = max{dp(v)} + totu, edge(u,v)存在. totu是scc(u)的结点数. 其实就是记忆化搜一下...重边就用set判一下-------------------------------...
阅读全文
摘要:先按完全背包做一次dp, dp(x)表示x元的东西有多少种方案, 然后再容斥一下.------------------------------------------------------------------------#include#include#includeusing namespa...
阅读全文
摘要:NOI的水题...直接一遍DFS即可-------------------------------------------------------------------------#include#include#include#include#include#includeusing names...
阅读全文
摘要:枚举树上的每个结点做管理者, 贪心地取其子树中薪水较低的, 算出这个结点为管理者的满意度, 更新答案. 用平衡树+启发式合并, 时间复杂度为O(N log²N)----------------------------------------------------------------------...
阅读全文
摘要:一不小心速度就成了#1....这道题显然是求最长反链, 最长反链=最小链覆盖.最小链覆盖就是先做一次floyd传递闭包, 再求最小路径覆盖. 最小路径覆盖=N - 二分图最大匹配. 所以把所有点拆成x,y两个, 然后存在edge(u,v)就连ux->vy. 然后跑匈牙利即可.------------...
阅读全文
摘要:先tarjan求出割点..割点把图分成了几个双连通分量..只需dfs找出即可. 然后一个bcc有>2个割点, 那么这个bcc就不用建了, 因为一定可以走到其他救援出口. 只有一个割点的bcc就要建, bcc内任何一个非割点的结点都可以建. dfs的时候记一下bcc的结点数, 然后乘法原理算出方案数....
阅读全文
摘要:先判无解把整个棋盘都放上士兵, 只需求最多可以拿走多少个士兵即可.每一行看做一个点r(i), 每一列看做一个点c(i)S->r(i), c(i)->T 连边, 容量为可以拿走的最大士兵数(i,j)不是障碍格:r(i)->c(j),容量+oo最后答案为n*m-k-maxflow------------...
阅读全文
摘要:坑爹...数据是错的..详见discuss http://www.lydsy.com/JudgeOnline/wttl/wttl.php?pid=1060先求根到叶子的距离最大值x, 然后把所有叶子到根的距离变成x. 要使增加的最少, 就要利用不同叶子到根的路径的重复部分...然后各种乱搞就可以了....
阅读全文