C-world-up-黑龙江12届省赛热身赛
来源:互联网 发布:mac air怎么下载office 编辑:程序博客网 时间:2024/04/29 16:31
给定一个矩阵a[i][j]是i战胜j的概率
第一回合只能是临近的比赛12 34,给定的n是偶数(2 4 8 16 32 64)
第二回合是第一回合胜利的在比赛
最后决出一个人
问你1是最后胜利者的概率是多少。。。
看的大神的代码
用的尺取法+dp
include
include
include
include
/*这道题的精髓是尺取法,
我开始想dp的时候,像个傻逼一样,特别傻逼的dp方法
dp[i][j]是i到j这个范围内时 i为霸主的价值。
看了大佬的dp,兼职是鬼斧神工。
*/
const int maxn=110;using namespace std;double dp[maxn][maxn];double a[maxn][maxn];int main(){ int t; int n; int TT,TTT; cin>>t; while(t--) { cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; memset(dp,0,sizeof(dp)); int cnt=0; for(int i=1;i<=n;i++) dp[i][0]=1.0; //int l=0,ll=0,r=0,rr=0; for(int i=2;i<=n;i*=2) { int l=0,ll=0,r=0,rr=0; for(int j=1;j<=n;j++)//每次循环,都从1到n遍历 { if(j>rr) { l=j;//把当前j给成最左边的位置 rr+=i;//最右边的加到i; r=rr-(i/2); ll=r+1; } if(j<=r) { TT=ll; TTT=rr; } else { TT=l; TTT=r; } dp[j][cnt+1]=0; for(int x=TT;x<=TTT;x++) dp[j][cnt+1]+=dp[x][cnt]*dp[j][cnt]*a[j][x]; printf("%d %d %d %d %d %d\n",i,j,ll,rr,l,r); } cnt++; } printf("%.6f\n",dp[1][cnt]); } return 0;}
0 0
- C-world-up-黑龙江12届省赛热身赛
- 省赛热身赛C
- 2017 黑龙江省赛热身赛 C
- 2017 东北四省赛热身赛 C
- 热身赛
- 热身赛
- 2014 ACM-ICPC Beijing Warm-up (北京赛区热身赛)
- 第12届北师大校赛热身赛第二场 C. 组合数
- 12/9/1 热身赛总结
- Webots入门(一)-build up a world
- ACM-ICPC 2014 Anshan Warm-up (鞍山赛区热身赛) D题
- 黑龙江耳鼻喉
- 青科大编程赛热身赛C题:火柴棒等式
- 2016郑州轻工业学院 玲珑杯热身赛 C题 This offer
- 温故C++:Hello World
- C#_01_Hello World
- C++(1) Hello world!
- C语言hello world
- android项目开发之-动态任务分配功能的实现
- sap系统的ooalv的学习标准程序
- WINDOWS XP AND VISTA
- php中获取当前文件的路径
- mysql(三)复合索引中列的顺序怎么选择提供性能
- C-world-up-黑龙江12届省赛热身赛
- 【微机实验系列】PCI设备操作
- Android中Broadcast Receiver组件详解
- Micropython加速物联网开发3
- Java NIO系列教程(十一) Pipe
- C++模板特例化
- matlab+数字图像处理教程之1-图像的基本操作
- Java 实例
- Oracle控制文件和日志文件管理