
dp
文章平均质量分 70
IED98
这个作者很懒,什么都没留下…
展开
-
bzoj1076: [SCOI2008]奖励关 压状dp
有个技巧,从后往前推,这样方便很多,由于可以取多次,所以状态转移的时候只能用“|”#include #include #include #include #include using namespace std;double f[110][1<<15];int need[110],n,m,k,val[110];int main(){ int tmp,a,b; sc原创 2015-01-08 21:50:37 · 486 阅读 · 0 评论 -
bzoj1260: [CQOI2007]涂色paint dp
直接判断两端颜色是否相同,然后直接记忆化搜索就可以了。#include #include #include #include #include #include using namespace std;#define maxn 110int dp[maxn][maxn];char st[maxn];int n,siz[maxn],num[maxn];int dfs(int l原创 2015-03-20 11:33:25 · 488 阅读 · 0 评论 -
bzoj1853: [Scoi2010]幸运数字 dp+容斥原理
很明显,把只有6和8组成的数都找出来。然后我们考虑只有6和8的情况 那么就是lim/6+lim/8-lim/LCM(6,8)很明显是个容斥原理,然后我们可以发现范围内的只有6和8的数中互质的数只有10几个所以容斥的复杂度是可以接受的此题求LCM会爆longlong然后就会TE 不要问我为什么,亲测。用double求近似值作比较,然后枚举顺序要从大到小#include #inclu原创 2015-03-20 10:48:04 · 1502 阅读 · 0 评论 -
bzoj1090: [SCOI2003]字符串折叠 dp
可以先求每个区间可以折叠的长度,这个可以先hash一下然后直接记忆化搜索。#include #include #include #include #include #include using namespace std;char st[110];#define pb(a) push_back(a)int x=123;unsigned long long ha[110],p原创 2015-03-20 10:49:38 · 594 阅读 · 0 评论 -
bzoj1259: [CQOI2007]矩形rect 暴力
本来是一道插头dp的题目,可是CLJ来一句打表,这个题就被结束了。。。#include #include #include int ans[7][8] = { {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 2, 3, 4, 5, 6}, {0, 0, 6, 15, 28, 45, 66, 91},原创 2015-03-20 11:36:24 · 1078 阅读 · 0 评论 -
bzoj1030: [JSOI2007]文本生成器 AC自动机+dp
f[i][j]表示到第i个位置匹配自动机上第j个结点的方案数。ans=所有排列-无单词的排列。一开始我们可以在初始化确定哪些点不能作为最后一个点。在确定每一位的时候可以用自动机进行快速的查找。#include #include #include #include #include using namespace std;#define mod 10007int siz,n,m原创 2015-02-04 20:13:41 · 992 阅读 · 0 评论 -
bzoj3566: [SHOI2014]概率充电器 dp
原文改自yzf的博客首先普及一个概率公式 P(A+B)=P(A)+P(B)-P(AB)题意:一些充电元件和导线构成一棵树,充电元件是否能充电有2种情况,1、它自己有qi%的概率充电2、与它相邻的元件通过导线给它充电(导线有p%的概率导通)求最终充了电的元件的期望题解:首先可以将元件能否充电分成3种情况考虑,1、它自己给自己充好了电2、原创 2015-03-24 19:28:06 · 750 阅读 · 0 评论 -
bzoj2891: 匹配难题 压状dp
由于人很少,我们可以用longlong进行位运算记录 每个人匹配的状态,根据hall定理我们可以知道很多状态都是不成立的,所以我们先预处理出每种状态之间的关系,把位数太大的数进行hash,然后就跑压状dp了。#include #include #include #include using namespace std; #define n 105#define m 400原创 2015-07-13 09:41:39 · 836 阅读 · 0 评论 -
bzoj2432: [Noi2011]兔农 快速幂+数论
不难发现,这个题就是求斐波那契数列改化,由于有一个很强的结论,斐波那契数列取模是一个周期数列,所以我们可以去找循环节,然后找到循环节后把这第一个循环节处理出来。 其实vfk说的很详细了,注意这里mod的数不一定是个质数,我们只能用拓展欧几里得求逆元。。。。http://vfleaking.blog.163.com/blog/static/174807634201341721051604/#原创 2015-07-13 10:14:23 · 1980 阅读 · 0 评论 -
bzoj2875: [Noi2012]随机数生成器 裸矩阵乘法
裸题,注意细节就可以了,不再赘述。#include #include #include #include #include using namespace std;typedef long long sint;struct matrix{ sint a[2][2]; void cl() { memset(a,0,sizeof(a));原创 2015-07-13 11:29:16 · 562 阅读 · 0 评论 -
bzoj3242: [Noi2013]快餐店 树形dp+线段树
对于不是环上的点我们可以用树形dp解决,剩下的就是在一个环上找距离最远的两点。我们可以拆环,几下每个点第一大和第二大的距离这样最长链就是max{sum[j]-sum[i]+dis[i]+dis[j]}。于是用两颗线段树分别维护max{sum[j]+dis[j]}和max{dis[i]-sum[i]}。然后更新答案。#include #include #include #inc原创 2015-07-13 12:21:22 · 1319 阅读 · 0 评论 -
bzoj1063: [Noi2008]道路设计 树形dp
这题太神了,所以直接看了题解 http://www.cnblogs.com/jianglangcaijin/archive/2013/12/06/3462328.html 将狼踩进讲得很详细。公式变换太美我不敢看。还有取模的时候要判书不是0,有数据刚好是mod的倍数。。。。。#include #include #include #include using namespace std;#原创 2015-07-13 11:03:00 · 635 阅读 · 0 评论 -
bzoj1055: [HAOI2008]玩具取名 dp
dp[l][r][a]代表区间l到r是否能变为a然后直接记忆化搜索。#include #include #include #include #include #include using namespace std;char p[4]={'W','I','N','G'};int q[255],t[4];;char ch[205],a[4][20][2];int dp[205原创 2015-03-20 10:33:46 · 719 阅读 · 0 评论 -
bzoj1855: [Scoi2010]股票交易 dp
f[i][j] = max{f[t][p] - ap[i] * (j - p),f[t][q] + bp[i] * (q - j)},且p >= j - as[i], q 即f[i][j] = max{f[t][p] + ap[i] * p - ap[i] * j, (1) f[t][q] + bp[i] * q - bp[i] * j}。 (原创 2015-03-20 10:22:44 · 865 阅读 · 0 评论 -
bzoj1087: [SCOI2005]互不侵犯King 压状dp
先枚枚举每一行的棋子分布情况,再对各种情况进行判断,这样可以减少枚举次数。#include #include #include #include #include #include #include using namespace std;typedef long long sint;int n,m;sint f[10][(1<<10)][100];bool flag[1<<原创 2015-01-05 21:04:44 · 517 阅读 · 0 评论 -
bzoj2734: [HNOI2012]集合选数 压状dp
写出如下矩阵1 3 9 27...2 6 18 54...4 12 36 108...发现最多有11列。。。我们在其中选取一些数,相邻的不能选择然后就可以状压求方案数了,但是5没有出现,同样5的倍数也没有出现,7也如此。。应该记录哪些数字出现过,没出现过就作为矩阵的第一个元素,最后把若干个矩阵的方案相乘#include #inclu原创 2015-01-05 22:25:53 · 639 阅读 · 0 评论 -
bzoj1026: [SCOI2009]windy数 数位dp
第一次接触数位系统,感觉还是很神奇的。f[I][J]代表一个i位数顶位为j的windy数有多少个。我们可以用work(n)来计算n以内所有windy数的个数。那么答案就是work(b)-work(a-1);由于没有位数限制work(n)中要把所有位数小的windy数个数加上去。在枚举每一位的时候如果不是个位的话,当前枚举到得值要比n这个数的这一位小,为了避免下一位超过n。#原创 2014-12-30 20:17:32 · 959 阅读 · 0 评论 -
bzoj1037: [ZJOI2008]生日聚会Party DP
一看就知道是dp,一开始我想的是三维的dp[a][b][c] c有2*k+1个值分别表示男生和女生个数的关系。后来发现无法表示所有状态。。。。。因为dp更新的时候男生比女生多和女生比男生多的情况都要考虑。#include #include #include #include #include using namespace std;#define mod 12345678int f[原创 2015-02-02 22:07:16 · 935 阅读 · 0 评论 -
bzoj3611: [Heoi2014]大工程 虚树+树形dp
题目大意:给定一棵树,m次询问,每次给出k个关键点,询问这k个点之间的两两距离和、最小距离和最大距离n思路:利用LCA单调性,每次询问的时候重新建树,在这棵树上做DP,使得总体时间复杂度降到O(nlogn)。我的做法是维护四个数组,sum,size,_min,_max,分别表示以当前节点为根节点的子树中的所有关键点到根节点的距离的总和,共有多少个原创 2015-01-17 05:40:45 · 1245 阅读 · 7 评论 -
bzoj1212: [HNOI2004]L语言 Trie+dp
直接建一棵Trie然后在上面遍历,竟然因为siz没有初始化为1而没有1A真是可惜。。。。。。#include #include #include #include #include using namespace std;#define maxn 1001000char s[maxn];bool f[maxn];int n,m,danger[maxn],a[maxn][27]原创 2015-02-05 09:32:04 · 1038 阅读 · 0 评论 -
bzoj1072: [SCOI2007]排列perm 压状dp
二进制位表示每一位的数字用过没有,第二维表示当前这个数%d等于几,由于有相同的数所以结尾要除以sum[I]! (0#include #include #include #include #include #include using namespace std;int dp[1<<11][1010];int fac[15],n,m,d,a[15],sum[15];void get原创 2015-01-20 12:53:56 · 460 阅读 · 0 评论 -
bzoj1833: [ZJOI2010]count 数字计数 数位dp
传统数位dp思想,分位统计f[i][j][k]表示一个长i位的数第一位为j 到0 中字符k出现的次数。#include #include #include #include #include #include using namespace std;long long f[13][10][10],fac[20];struct node{ long long a[10];原创 2015-01-20 21:40:30 · 492 阅读 · 0 评论 -
bzoj1079: [SCOI2008]着色方案 dp
四川很喜欢dp啊,又是个神奇的dp。由于ci很小 我们可以以ci为维数,记下每个数量的油漆。由于不能有相同的颜色相邻我们要几下上次取的油漆属于哪一类。#include #include #include #include #include using namespace std;#define mod 1000000007typedef long long sint;int k,s原创 2015-02-22 12:26:15 · 508 阅读 · 0 评论 -
bzoj2298: [HAOI2011]problem a dp
Description一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数)Input第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai、biOutput一个整数,表示最少有几个人说谎Sample Input32 00 22 2Sample Output1原创 2015-03-20 08:31:56 · 664 阅读 · 0 评论 -
bzoj2024: [SHOI2009] 舞会 dp
一开始以为是和 配对 一样的dp 然后就发现了各种梗。然后老老实实从头开始。设dp[i][j]为前前i对有j组女比男高然后发现我们得让男女都是有序的才能继续进行。转移肯定是从dp[i-1][j-1] 和dp[i-1][j]得来的。然后分girl[i]>boy[i] 和boy[i]>girl[i] 分类讨论这题只给核心代码(LZ调了很久啊,数据良心啊,怎么会让你们这么简单过此题,原创 2015-03-20 09:41:04 · 820 阅读 · 0 评论 -
bzoj1040: [ZJOI2008]骑士 dp
这题是pxr讲过的题,我又想起了那段日子。刚刚转到4班(壮哉我大四班)。当时和1023一样,听懂后就没有管了。前几天做了几个拆环的dp,所以就想到还有这个题,于是就过来把它切了。不知道pxr出国准备得怎么样了。这个题就是拆环,然后像没有上司的舞会那样进行一次dp就好了。注意,这个题是多个块。。。。。#include #include #include #include using原创 2015-07-13 11:07:18 · 901 阅读 · 0 评论