清北考前刷題da7下午好
阿新 • • 發佈:2017-11-04
轉移 沒有 urn etc for cnblogs 概率 get string
三向城
/* 原圖一定是一棵完全二叉樹。 根節點是x,左節點是x*2,右節點是x*2+1 轉化為二進制往左右走就很明顯了。 */ #include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; int T,x,y,k,ans,pos; inline int read() { int x=0,f=1;char c=getchar(); while(c>‘9‘||c<‘0‘){if(c==‘-‘)f=-1;c=getchar();} while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();} return x*f; } int main() { freopen("city.in","r",stdin); freopen("city.out","w",stdout); T=read(); while(T--) { x=read();y=read();ans=0; if(x==y){printf("1\n");continue;} while(x!=y) { if(x>y) x/=2,ans++; if(y>x) y/=2,ans++; } printf("%d\n",ans); } return 0; }
靈魂畫師
/* dp[i][j][k]表示第i個元素經過j次染色變為k顏色的概率。 考慮一段區間,每個元素只有選和不選兩個狀態,所以概率都為1/2. 轉移的時候枚舉下一個染不染和染成什麽顏色。染成下一種顏色的概率是1/c。 可以看出第一維是沒有用的,因為被覆蓋次數相同的格子概率是相同的。*/ #include<iostream> #include<cstdio> #include<cstring> #define N 107 using namespace std; int n,m,tot,c,k,t,l,r,cnt[N]; double dp[N][N],ans; inline int read() { int x=0,f=1;char c=getchar(); while(c>‘9‘||c<‘0‘){if(c==‘-‘)f=-1;c=getchar();} while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();} return x*f; } void DP() { dp[0][1]=1; for(int i=0;i<tot;i++) { for(int j=0;j<c;j++) { dp[i+1][j]+=dp[i][j]/2; for(int x=0;x<c;x++) dp[i+1][(j*x)%c]+=dp[i][j]/(2*c); } } for(int i=1;i<=n;i++) for(int j=0;j<c;j++) ans+=dp[cnt[i]][j]*j; printf("%.3lf\n",ans); } int main() { freopen("paint.in","r",stdin); freopen("paint.out","w",stdout); n=read();c=read();k=read(); for(int i=1;i<=k;i++) { l=read();r=read(); for(int j=l;j<=r;j++) cnt[j]++,tot=max(tot,cnt[j]); }DP(); return 0; }
香子蘭
清北考前刷題da7下午好