UVA 11825 Hacker's Crackdown(状压dp)

先把在同一网络中的电脑整理出来,然后再枚举子集,最后就是一般的状压dp。#include #include using namespace std; const int maxn=16; int p[1<<maxn],dp[1<<maxn],cover[1<<m...

2016-10-08 19:56:34

阅读数:242

评论数:0

HDU 1703 PBD(递推)

假设当人数是x时,传递完成需要f次,那么添加一个人时,只需要把新的人与任意一个人连接,那么这个人带有了新人的信息,然后再进行f次,旧的人都带有所有人的信息,新人再与任意一个人连接即可,f[n]=f[n-1]+2。#include using namespace std; const int max...

2017-01-24 15:22:45

阅读数:122

评论数:0

HDU 1701 ACMer

这题意太蛋疼了,要求人数最少,那么x从1枚举,人数最少也就是说ACMer数也是最少。#include using namespace std; int main() { int t; cin>>t; while(t--) { int x=...

2017-01-24 14:17:27

阅读数:118

评论数:0

HDU 1215 七夕节(打表)

这题一开始想用唯一分解定理做,蠢哭。#include using namespace std; const int maxn=500000+5; int a[maxn]; int main() { for(int i=1;i<maxn;i++){ for(int j=...

2017-01-24 13:27:06

阅读数:139

评论数:0

HDU 1214 圆桌会议

#include using namespace std; int main() { int n; while(~scanf("%d",&n)) { int ans=(n-n/2)*(n-n/2-1)/2+(n/2-1)*(n/2...

2017-01-24 12:17:56

阅读数:117

评论数:0

HDU 1210 Eddy's 洗牌问题(找规律)

#include using namespace std; int main() { int n; while(~scanf("%d",&n)) { int i=2,step=0; while(i!=1) ...

2017-01-23 20:37:08

阅读数:163

评论数:0

SPOJ Make them equal !

把所有数加起来,对个数取模,如果刚好等于0,那么都可凑成n各ans/n,如果不等于0,可以凑成n-1个(ans-ans%n)/(n-1)。 #include using namespace std; const int maxn=100000+5; int a[maxn]; int main()...

2016-12-31 20:27:13

阅读数:77

评论数:0

UVA 1427 Parade(dp)

这题poj上时限卡得太紧了,IO不优化超市,优化IO313ms。 定义状态为f[i][j]代表走到第i行第j个点的最大高兴值,那么f[i][j]可以由两个状态转移过来,f[i][j]=max(f[i+1][k]-sum[i][k]+sum[i][j],f[i+1][k]+sum[i][k]-su...

2016-10-20 09:48:55

阅读数:89

评论数:0

UVA 1474 Evacuation Plan(dp)

这题一开始状态想对了,但是因为是n^2,所以直接被否定了,但是最后居然看到时间20000ms= =。 定义状态f[i][j]代表处理完了前i个队,分配到j个避难处的最短路径和,那么不难想到状态转移是f[i][j]=min(f[i-1][j],f[i-1][j-1])+abs(d[i]-d[j])...

2016-10-19 20:44:49

阅读数:92

评论数:0

UVA 12105 Bigger is Better(数位dp)

f[i][j]表示用i根棍子余数为j可以组成的最大数。 但是最长可能有55位,所以用字符串来保存这个数,所以定义f[i][j][k]; 每次先枚举火柴棍的根数,再枚举余数,最后枚举最新加进去的数字,每次把火柴棍为i时,余数为0的最大组成数字记下来即可。#include #include #in...

2016-10-19 18:08:44

阅读数:87

评论数:0

UVA 1437 String painter(区间dp)

先把A串当成一个空串,然后f[i][j]表示区间[i,j]的一个空串刷成B串最少需要多少个步骤。 在转移的过程中,f[i][j]的初值赋f[i][j]=f[i+1][j]+f[i][i],然后从枚举k=i+1开始到r,如果B[i]==B[k],那么f[i][r]=min(f[i][r],f[i+...

2016-10-19 16:04:56

阅读数:151

评论数:0

UVA 12235 Help Bubu(状压dp)***

这是目前碰到最难的dp题之一,看题解都看得迷迷糊糊的。 现在是定义状态dp[i][j][s][x],代表前i本书,拿走了j本书,s是剩下书的集合,x是最后一本书的高度的混乱度。 为了省空间,第一维可以用滚动数组。 然后依次枚举第二三四维,如果目前的高度h与x相同,那直接从i-1继承过来即可,...

2016-10-18 22:52:00

阅读数:86

评论数:0

UVA 10559 Blocks(记忆化dp)

这题在poj上做过,之前的博客已经有详细解释了。 #include #include #include #include #include using namespace std; #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define s...

2016-10-18 18:28:55

阅读数:114

评论数:0

UVA 1407 Caves(树形dp)

这题定义状态f[i][j][0]和f[i][j][1]。 f[i][j][0]表示遍历以i为根节点的子树的j个节点并且不回到节点i,那么状态方程为f[i][j][0]=min(f[i][j][0],min(f[i][j-k][1]+f[v][k][0]+w,f[i][j-k][0]+f[v][k...

2016-10-18 16:48:34

阅读数:82

评论数:0

UVA 1456 Cellular Network(dp)

这题一开始看到什么数学期望,没敢做,放倒最后才做,没想到这么水= =。 #include #include #include #include using namespace std; #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define...

2016-10-17 22:06:37

阅读数:97

评论数:0

UVA 10564 Paths through Hourglass(dp)

这题状态挺好想的,但是写得我吐血,一开始从上往下的,写到崩溃,一直无法输出正确答案,代码又太烦,删了重写了从下往上的,然后输出只需要简单的搜索就行了,唯一需要注意点的就是dp数组和记录答案的变量都要开long long型。 #include #include #include #include ...

2016-10-17 20:58:41

阅读数:84

评论数:0

UVA 11795 Mega Man's Mission(状压dp)

一开始用记忆化搜索写的,最后发现存储状态需要用2^16*2^16的空间,果断放弃。 #include #include #include #include using namespace std; #define rep(i,a,b) for(int i=(a);i<=(b);i++) #...

2016-10-16 23:55:15

阅读数:132

评论数:0

UVA 1452 Jump(约瑟夫环变形)

当i=2时,可以求出第二死的,当i=3时,可以求出第三死的,那么只要像第一死的一样递推下去就可以了。#include #include #include #include using namespace std; #define rep(i,a,b) for(int i=(a);i<=(b)...

2016-10-16 15:51:24

阅读数:107

评论数:0

UVA 1366 Martian Mining(dp)

这一题只要选中i,j那么无论是横的,还是列的都是将i,j之前的一排全部选了,不能转弯。 所以每次更新相当于从一个已有的一个矩形的长或宽扩展1,那么状态方程就可以定义为dp[i][j]=max(dp[i-1][j]+row[i][j],dp[i][j-1]+col[i][j])。 #includ...

2016-10-16 14:25:28

阅读数:86

评论数:0

UVA 1292 Strategic game(树形dp)

这题一开始定义状态定义错了,我以为只要父节点放灯了,子节点不就不用放了,事实上子节点需要两种状态都枚举过,就是放与不放都需要枚举,如果父节点不放的话,那么子节点必须放。#include #include #include #include #include using namespace std;...

2016-10-16 11:15:29

阅读数:70

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭