摘要: 这道题目还是有些歧义,成了环形就难办了啊,感觉就用不了dp了,不符合无后性了这道题目是树形dp,用了一个晚上学习树形dp不过我的代码没有通过#include "iostream"#include "cmath"#include "string.h"using namespace std;int main(){ int n,m,i,j,k,state[220],low[220][220],high[220],set[220],f[220][2],a,b,photon[220],shu[220][220]; while(cin>&g 阅读全文
posted @ 2013-09-19 15:34 龙城星 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 大神都不会做,所以我就暂时不做啦 阅读全文
posted @ 2013-09-18 18:17 龙城星 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 我的代码老是runtime error 所以看了题解,有些地方还是看不懂啊分析:1》台上的巧克力数和当前拿出的巧克力的颜色有关系,设dp[i][j]表示拿出第i块的时候台上有j块巧克力的概率。巧克力i的颜色有两种情况:与桌上的巧克力颜色相同或者是与桌上的巧克力颜色不同状态转移方程为:dp[i][j]=dp[i-1][j-1]*p1+dp[i-1][j+2]*p2;p1=(c-j+1)/c,p2=(j+1)/c;2》状态i仅和i-1有关,可以进行空间上的优化,用滚动数组实现3》当拿出2*n+1奇数次巧克力,有k次出现同色,最后剩2*n+1-2*k=2*(n-k)+1,即桌子上剩余奇数个当拿出2* 阅读全文
posted @ 2013-09-18 17:11 龙城星 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 有思路,但是老是出错人家的答案#include #include #include using namespace std;const double INF = 999999.99;double dp[16][9][9][9][9];double s[9][9];double ave;int main(){ int i,j,u,v,n,k,g; scanf("%d",&n); for(i=0;i<=8;i++) s[i][0]=s[0][i]=0.0; for(i=1;i<=8;i++) for(j=1;j<=8;j++) { ... 阅读全文
posted @ 2013-09-16 20:10 龙城星 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 超时了啊,看了人家的正确代码,思路差不多,但是我觉得他错了,可就是ACCEPT了我的代码#include "iostream"#include "algorithm"#define INF 100000using namespace std;struct node{ int l,r,h;}num[1010];struct{ int l,r;}dp[1010];bool cmp(node a,node b){return a.h>b.h;}int ab(int a){return a>0?a:(-a);}int min(int a,int b) 阅读全文
posted @ 2013-09-13 17:08 龙城星 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 一开始用了二维的数组,结果空间超了后来用了滚动数组就ACCEPT了啊#include "iostream"using namespace std;int max(int a,int b){return a>b?a:b;}int p[5002],q[5002];int main(){ char list1[5002],list2[5002]; int n,i,j; cin>>n; cin>>list1; for(i=n;i>=1;i--){ list2[n-i+1]=list1[i-1]; list1[i]=list1[i-1]; } fo 阅读全文
posted @ 2013-09-12 19:15 龙城星 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 真的是一道好题,不仅仅在dp[i][j]的表示上,还是在输出上pos上的确认上之前有一个错误,不过后来改了,就ACCEPT了work(); print(1,n); cout=1;i--){ list[i]=list[i-1]; f[i][i]=1; } for(v=1;vtem){ f[i][j]=tem; pos[i][j]=k; } } } }}void print(int s,int e){ if(s>e)return; else{ if(s==e){ if(list[s]=='(... 阅读全文
posted @ 2013-09-12 10:26 龙城星 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 呵呵。。。超时了啊,不懂啊先看看人家的正确代码,很长,思路感觉有点复杂#include#include#include#define inf 0x7fffffff#define min(x,y) xbasket[i].num) return false; p1/=6; p2/=6; } return true;}int cal(int p)//状态产生价值计算{ int i; int sum=0; for(i=0;i>e; top=1; memset(b,0,sizeof(b)); memset(v,0,sizeof... 阅读全文
posted @ 2013-09-11 16:43 龙城星 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 这道题目跟之前的doing homework很像啊,同样的压缩方法,只是这个用三进制的格式#include "iostream"#include "string.h"#define INF 10000000using namespace std;int s[12]={0,1,3,9,27,81,243,729,2187,6561,19683,59049};int dig[60000][11],dp[60000][11],map[11][11];void work(){ int i,t,j; for(i=0;ib?b:a;}int main(){ int 阅读全文
posted @ 2013-09-10 19:31 龙城星 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 最近老是没有ACCEPT,看到这道题目就想让自己找回些自信#include "iostream"#define INF -1000000using namespace std;int max(int a ,int b){return a>b?a:b;}int main(){ int m,n,i,j,map[120][120],dp[120][120],k; while(cin>>m>>n){ for(i=1;i>map[i][j]; } } int temp=INF; for(i=0;i<=n;i++)dp[0][i]=0; for 阅读全文
posted @ 2013-09-09 13:25 龙城星 阅读(125) 评论(0) 推荐(0) 编辑