1. 程式人生 > >清北考前刷題da7下午好

清北考前刷題da7下午好

轉移 沒有 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下午好