日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CC和他的AE86

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC和他的AE86 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CC和他的AE86

題意:

概率dp

?

場上本來是用矩陣寫的,無奈出了點偏差一直過不了樣例!!!

1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn=55; 5 const int maxe=3600; 6 struct Matrix{ 7 int n; 8 double m[maxn][maxn]; 9 10 void init(int sz){ 11 n=sz; 12 for(int i=0;i<n;i++){ 13 for(int j=0;j<n;j++){ 14 m[i][j]=0.0; 15 } 16 } 17 } 18 Matrix(int sz){init(sz);} 19 20 void set_I(){ 21 for(int i=0;i<n;i++) m[i][i]=1.0; 22 } 23 24 Matrix operator* (const Matrix &a)const{ 25 Matrix ans(n); 26 for(int k=0;k<n;k++){ 27 for(int i=0;i<n;i++){ 28 for(int j=0;j<n;j++){ 29 ans.m[i][j]+=m[i][k]*a.m[k][j]; 30 } 31 } 32 } 33 return ans; 34 } 35 }; 36 37 int deg[maxn]; 38 int u[maxe],v[maxe]; 39 40 41 int main(){ 42 int n,m; 43 while(scanf("%d%d",&n,&m)!=EOF){ 44 memset(deg,0,sizeof(deg)); 45 for(int i=0;i<m;i++){ 46 scanf("%d%d",&u[i],&v[i]); 47 u[i]--;v[i]--; 48 deg[u[i]]++; 49 deg[v[i]]++; 50 } 51 int q; 52 scanf("%d",&q); 53 while(q--){ 54 int ss,ee,d; 55 scanf("%d%d%d",&ss,&ee,&d); 56 ss--;ee--; 57 Matrix base(n); 58 for(int i=0;i<m;i++){ 59 int x=u[i],y=v[i]; 60 base.m[x][y]=1.0/deg[x]; 61 base.m[y][x]=1.0/deg[y]; 62 if(x==ee) base.m[x][y]=0; 63 if(y==ee) base.m[y][x]=0; 64 } 65 Matrix ans(n); 66 ans.set_I(); 67 while(d){ 68 if(d&1) ans=ans*base; 69 d>>=1; 70 base=base*base; 71 } 72 double res=0; 73 for(int i=0;i<n;i++){ 74 if(i!=ee) res+=ans.m[ss][i]; 75 } 76 printf("%.8lf\n",1.0-res); 77 } 78 } 79 } View Code

?

矩陣好像慢很多,下面dalao寫的還沒仔細看~

1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 typedef unsigned long long ull; 5 const int maxn=55; 6 const int maxm=1005; 7 const int maxe=7000005; 8 const int inf=0x3f3f3f3f; 9 int n,m,k; 10 double dp[maxn][maxn][105]; 11 vector<int> e[maxn]; 12 bool vis[maxn][maxn][105]; 13 double DP(int u,int to,int times){ 14 if(times==-1)return 0; 15 if(vis[u][to][times])return dp[u][to][times]; 16 if(u==to)return 1; 17 int sz=e[u].size(); 18 double ans=0; 19 for(int i=0;i<sz;i++){ 20 ans+=DP(e[u][i],to,times-1)/sz; 21 } 22 vis[u][to][times]=1; 23 return dp[u][to][times]=ans; 24 } 25 26 int main(){ 27 int a,b,q,c; 28 while(~scanf("%d%d",&n,&m)){ 29 for(int i=1;i<=n;i++)e[i].clear(); 30 memset(vis,0,sizeof(vis)); 31 for(int i=0;i<m;i++){ 32 scanf("%d%d",&a,&b); 33 e[a].push_back(b); 34 e[b].push_back(a); 35 } 36 scanf("%d",&q); 37 for(int i=0;i<q;i++){ 38 scanf("%d%d%d",&a,&b,&c); 39 printf("%.10lf\n",DP(a,b,c)); 40 } 41 } 42 return 0; 43 } dalao

?

?

哎,前三場個人賽全部爆炸!每場都會卡在一個小bug上無法自拔~~ 今天這場還差點爆零=_=

明天還有最后一場,但愿不爆零吧=_=

其實一個假期下來感覺已經提高不少了,一比才知道差距啊。。。。。。

?

轉載于:https://www.cnblogs.com/yijiull/p/7456075.html

總結

以上是生活随笔為你收集整理的CC和他的AE86的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。