随笔分类 -  动态规划—dp

摘要:从本质入手,这个东西影响取值的就是相邻两个哪个先取 设f[i][0/1]为前i个(i 1,i)中先取i/i 1的值(这里不算上i的贡献 转移就显然了,注意要先复制 inf cpp include include using namespace std; const int N=3005; int n 阅读全文
posted @ 2019-06-17 21:14 lokiii 阅读(269) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2019-06-13 11:08 lokiii 阅读(1) 评论(0) 推荐(0)
摘要:首先直接按要求列出式子是\\( \sum_{i=1}^{n}\sum_{j=i+1}^{n}C_{a_i+a_j+b_i+b_j}^{a_i+a_j} \\) 这样显然过不了,因为ab的数据范围比较小,所以从这里入手,注意到后面的组合数含义是从点(ai,bi)走到点( aj, bj)的方案数 把但是 阅读全文
posted @ 2019-05-25 16:16 lokiii 阅读(138) 评论(0) 推荐(0)
摘要:把期望改成方案数最后除一下,设h[i]为最大值恰好是i的方案数,那么要求的就是Σh[i]\ i 首先包含其他区间的区间是没有意义的,用单调栈去掉 然后恰好不好求,就改成h[i]表示最大值最大是i的方案数,求Σ(h[i] h[i 1])\ i即可 然后考虑h怎么求,\\( h[i]=\sum_{j=1 阅读全文
posted @ 2019-05-08 16:29 lokiii 阅读(171) 评论(0) 推荐(0)
摘要:传送:https://vjudge.net/problem/TopCoder 14084 只是利用了笛卡尔树的性质,设f[i][j]为区间[i,j]的贡献,然后枚举中间最大的点k来转移,首先是两侧小区间贡献的,f[i][k 1]\ fac[j k]+f[k+1][j]\ fac[k i],大概是方案 阅读全文
posted @ 2019-05-03 20:33 lokiii 阅读(213) 评论(0) 推荐(0)
摘要:枚举起点,然后设f[i][j]为上凸壳上一个点是i当前点是j的最大面积,g是下凸壳,然后合并的时候枚举结束点t合并上下凸壳即可 这样的好处是每次转移都是往凸多边形里加一个三角形(s,i,j),所以判断转移合法只要预处理出所有三角形是否合法即可,同时预处理出三角形面积,转移就是f[j][k]=max( 阅读全文
posted @ 2019-05-03 16:59 lokiii 阅读(308) 评论(0) 推荐(0)
摘要:洛谷上有个点死活卡不过去,不知道是哪里写丑了orz 参考:https://www.cnblogs.com/ditoly/p/BZOJ4200.html 从上往下dp,设f为不向左右走直接上去的值,g为先向左右走一步再上去,至于找每个方向上的点,分别按x,y,x+y,x y排序然后二分即可 然后建出左 阅读全文
posted @ 2019-05-01 13:36 lokiii 阅读(195) 评论(0) 推荐(0)
摘要:第一、二问: 就是最小的最长公共长度+1,设f[i][j]为a匹配到i,b匹配到j,第一问的转移是f[i][j]=(a[i]==b[j]?f[i 1][j 1]+1:0),第二问的转移是f[i][j]=(a[i]==b[j]?f[i 1][j 1]+1:f[i][j 1]),注意这里更新最小公共长度 阅读全文
posted @ 2019-04-22 14:30 lokiii 阅读(168) 评论(0) 推荐(0)
摘要:是个神仙dp…… 参考:https://www.luogu.org/blog/xzz 233/solution p5289 设f[i][j][k]是前i个有限制的城市,所有学校中选蓝色阵营有j人,有限制的学校中鸭派系有k人的方案数;g[i][j]是前i个没有限制的城市,蓝色阵营有j人的方案数;h[i 阅读全文
posted @ 2019-04-15 18:56 lokiii 阅读(241) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-04-02 14:37 lokiii 阅读(8) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-25 20:24 lokiii 阅读(5) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-22 21:55 lokiii 阅读(9) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-20 19:37 lokiii 阅读(8) 评论(0) 推荐(0)
摘要:A题意:给定字符串s,求无重复字符子序列个数(子序列相同位置不同算不同) 在最后加一串a~z表示选了这些就是不选这个字符了,然后答案就是每次选每个字符位置的方案数的积 cpp include include using namespace std; const int N=100005,mod=1e 阅读全文
posted @ 2019-03-17 22:01 lokiii 阅读(212) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-14 22:02 lokiii 阅读(4) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-02-25 16:32 lokiii 阅读(5) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-02-14 18:02 lokiii 阅读(4) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-01-18 09:22 lokiii 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-01-12 22:08 lokiii 阅读(9) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-01-11 22:14 lokiii 阅读(6) 评论(0) 推荐(0)