2017南宁现场赛E 存档
生活随笔
收集整理的這篇文章主要介紹了
2017南宁现场赛E 存档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
現場時間不夠,沒加記憶化T了,滾cu
當時還寫錯了mx1,mx2的關系。。。
出場喜聞樂見有人加記憶化傳參遞歸過。。不過似乎是用的map?
這份代碼未必是正解,等到放上hdu交上去試試吧。。歡迎hack!
#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm> #include<queue> #include<string.h> #include<iostream> #include<math.h> #include<set> #include<map> #include<vector> #include<iomanip> using namespace std; #define ll long long #define pb push_back #define FOR(a) for(int i=1;i<=a;i++) const int inf=0x3f3f3f3f; const int maxn=2e5+5e4+9; const int mod=985003;ll r,k;double p;double vis[2049][2049];double work(ll qiang,ll ruo){if(qiang==0 && ruo==0)return 1;if(qiang<=2048 && ruo<=2048 && vis[qiang][ruo]){return vis[qiang][ruo];}ll hq=qiang>>1,hr=ruo>>1;if(ruo%2==1){vis[qiang][ruo]=p*work(hq,hr);return vis[qiang][ruo];}else if(qiang%2==1){if(ruo){double mx1=p*work(hq+1,(ruo-2)/2);double mx2=(1-p)*work(hq,hr);vis[qiang][ruo]=p*(mx1+mx2);return vis[qiang][ruo];}else{vis[qiang][ruo]=(1-p)*work(hq,0);return vis[qiang][ruo];}} }int main(){int T;scanf("%d",&T);while(T--){memset(vis,0,sizeof vis);scanf("%lld%lld%lf",&r,&k,&p); //進行r輪,排名kll num=1ll<<r;ll qiang=k-1,ruo=num-k;if(p<0.5)swap(qiang,ruo);printf("%.6lf\n",work(qiang,ruo));} }轉載于:https://www.cnblogs.com/Drenight/p/8611213.html
總結
以上是生活随笔為你收集整理的2017南宁现场赛E 存档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Strategy 策略模式
- 下一篇: 《疯狂Java讲义》(二十九)----