The 37th ACM/ICPC Asia Regional JinHua Site Online Contest - D,F
2012-09-22 19:32
459 查看
D - A very hard Aoshu problem
数据范围很小呃... 暴力搜索即可...枚举等号的位置...再DFS得出左边的值..再DFS找右边有多少种方案可以等于左边的加法值...
Program:
F - Aeroplane chess
看到这题就想DP嘛~~简单...每一项之和6个点有关...但是转移的方式没理清...还是队友想出来的...用E [ ] P [ ] 分别代表每个点的期望和概率...那么若A点一步能到达B点.:
E [ B ] + = 1/6* ( E [ A ] + P [ A ] )
P [ B ] + = 1/6 * P [ A ]
初始值 E [ 0 ] = 0 P [ 0 ] = 1
Program:
数据范围很小呃... 暴力搜索即可...枚举等号的位置...再DFS得出左边的值..再DFS找右边有多少种方案可以等于左边的加法值...
Program:
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> #include<map> #include<queue> #include<stack> #define ll long long #define oo 1000000000 #define pi acos(-1) using namespace std; ll ans,T[20][20],len,mid; char s[20]; void dfs2(int i,ll data,ll pre) { int k; if (i>len) { if (data==pre) ans++; return ; } for (k=i;k<=len;k++) dfs2(k+1,data+T[i][k],pre); return; } void dfs1(int i,ll data) { int k; if (i>mid) dfs2(mid+1,0,data); for (k=i;k<=mid;k++) dfs1(k+1,data+T[i][k]); return; } int main() { int i,j,k; while (gets(s+1)) { if (s[1]=='E') break; len=strlen(s+1); for (i=1;i<=len;i++) for (j=i;j<=len;j++) { T[i][j]=0; for (k=i;k<=j;k++) T[i][j]=T[i][j]*10+s[k]-'0'; } ans=0; for (mid=1;mid<len;mid++) dfs1(1,0); printf("%I64d\n",ans); } return 0; }
F - Aeroplane chess
看到这题就想DP嘛~~简单...每一项之和6个点有关...但是转移的方式没理清...还是队友想出来的...用E [ ] P [ ] 分别代表每个点的期望和概率...那么若A点一步能到达B点.:
E [ B ] + = 1/6* ( E [ A ] + P [ A ] )
P [ B ] + = 1/6 * P [ A ]
初始值 E [ 0 ] = 0 P [ 0 ] = 1
Program:
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> #include<map> #include<queue> #include<stack> #define ll long long #define oo 1000000000 #define pi acos(-1) using namespace std; int n,m,next[100200]; double E[100200],P[100200]; int getnext(int k) { if (next[k]==k) return k; return next[k]=getnext(next[k]); } int main() { int i,j,k,h; while (scanf("%d%d",&n,&m)==2) { if (!n && !m) break; for (i=1;i<=100100;i++) next[i]=i; while (m--) { scanf("%d%d",&i,&j); i=getnext(i); j=getnext(j); if (i!=j) next[i]=j; } for (i=1;i<=100100;i++) { E[i]=P[i]=0; next[i]=getnext(i); } E[0]=0; P[0]=1; for (h=0;h<n;h++) for (i=1;i<=6;i++) { k=next[i+h]; if (k>n) k=n; E[k]+=1.0/6*(E[h]+P[h]); P[k]+=1.0/6*P[h]; } printf("%.4lf\n",E ); } return 0; }
相关文章推荐
- The 37th ACM/ICPC Asia Regional JinHua Site Online Contest - D(爆搜)
- The 37th ACM/ICPC Asia Regional ChengDu Site Online Contest - F Groups
- The 37th ACM/ICPC Asia Regional Tianjin Site Online Contest - G Travel
- The 37th ACM/ICPC Asia Regional HangZhou Site Online Contest - F
- The 37th ACM/ICPC Asia Regional Tianjin Site Online Contest - A.B.J
- The 37th ACM/ICPC Asia Regional ChengDu Site Online Contest - B Control
- HDOJ 4293暨The 37th ACM/ICPC Asia Regional ChengDu Site Online Contest - F Groups
- The 37th ACM/ICPC Asia Regional ChangChun Site Online Contest - K USACO ORZ
- The 37th ACM/ICPC Asia Regional Tianjin Site Online Contest - A.B.J
- The 36th ACM/ICPC Asia Regional Chengdu Site —— Online Contest题解
- 【树状数组】The 36th ACM/ICPC Asia Regional Beijing Site Online Contest - G Panda
- 4046 Panda(The 36th ACM/ICPC Asia Regional Beijing Site —— Online Contest)
- HDU 4064 Carcassonne(插头DP)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
- The 37th ACM/ICPC Asia Regional ChangChun Site Contest - K Yukari's Birthday
- 4045 Machine scheduling(The 36th ACM/ICPC Asia Regional Beijing Site —— Online Contest)
- HDU 4031 Attack(离线+线段树)(The 36th ACM/ICPC Asia Regional Chengdu Site —— Online Contest)
- HDU 4033 4036 4039 The 36th ACM/ICPC Asia Regional Chengdu Site —— Online Contest
- 【栈+模拟】The 36th ACM/ICPC Asia Regional Beijing Site Online Contest - B Eliminate Witches!
- The 37th ACM/ICPC Asia Regional ChangChun Site Contest - C The Little Girl who Picks Mushrooms
- The 36th ACM/ICPC Asia Regional Beijing Site Online Contest - G Panda