dp
YZH__12345
这个作者很懒,什么都没留下…
展开
-
[bzoj4742][Usaco2016 Dec]Team Building
http://www.lydsy.com/JudgeOnline/problem.php?id=4742 dp[i][j][k]表示fJ前i只,FP前j只,各选了k只的方案数 初值:dp[i][j][0]=1 方程: dp[i][j][k]=(dp[i-1][j][k]+dp[i][j-1][k]-dp[i-1][j-1][k]+(a[i]>b[j])*f[i-1][j-1][k-1])mo原创 2017-09-03 19:20:22 · 413 阅读 · 0 评论 -
[bzoj3687]简单题
http://www.lydsy.com/JudgeOnline/problem.php?id=3687 首先,对于每个和如果出现次数超过1,只会产生0次或1次的贡献,因为x^x=0… 所以只需记出现次数and 1… f[i]表示和为i的集合出现次数and 1.. 对于每个新的数x都会使f[i+x]^=f[i]. 所以用bitset会比较优越 Orz w_yqts#include <bi原创 2017-09-03 20:57:47 · 347 阅读 · 0 评论 -
[NOIP2017][luogu3959]宝藏treasure
Orz w_yqts n<=12,状压.起点自定.每条边的贡献为层数*边权.每个点的连边不需要在意,只关注它对状态产生的贡献.(对于每个状态预处理,复杂度为O(2^n*n)).从小到大枚举层数,然后枚举初始状态,再枚举转移后状态.由于预处理,复杂度为O(3^n*n).(枚举转移的状态时,顺便统计每个新增点的贡献,而这个已经预处理完了)总体来说是O(2^n*n+3^n*n)的考场上只写了O(2^n*原创 2017-11-16 18:30:41 · 496 阅读 · 0 评论 -
[NOIP2017][luogu3953]逛公园
大意:给定有向图G,求1->n的长度<=最短距离+K的路径方案数 先求起点到每个点和每个点到终点的最短路,排除掉不可能到达的点防止其干扰(dis[i]+pdis[i]>dis[n]+K) 然后每条边的边权更新为len[x->y]+dis[x]-dis[y] (走这条边浪费的时间) 现在只需要统计浪费的时间不超过K的方案 长度为0的边用拓扑序转移,长度>0的直接转移……(dp[x][j]->d原创 2017-11-14 11:40:20 · 497 阅读 · 0 评论 -
[bzoj1584][Usaco2009 Mar]Cleaning Up 打扫卫生
Orz w_yqts 卡了18次,终于rank1了… f[i]表示以i为结尾的最小代价 f[i]最大为i(每个点单独一段) f[i]=min{f[j]+cnt(j+1~i)^2} 若cnt(j+1~i)^2>i就可以退出了. 若存在相同数字可以用链表删除. 大概是O(n^3/2)的.#include <cstdio> #define N 40005 inline int read()原创 2018-01-03 13:34:34 · 326 阅读 · 0 评论