zoukankan      html  css  js  c++  java
  • poj 3071 Football 概率dp

    点我看题

    这个题的状态转移方程很好写,  然而他的对手并不是那么好找......

    如果把编号从0开始的话, 就可以发现, 一个队伍的第i轮的对手, 是二进制里面第i位和它相反, 并且高位和它完全相同的数。知道了这个这题就没难度了(尽管我没找到这个关系

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define mem(a) memset(a, 0, sizeof(a))
     4 double dp[150][150], a[150][150];
     5 int main()
     6 {
     7     int n;
     8     while(cin>>n) {
     9         if(n == -1)
    10             break;
    11         for(int i = 0; i<(1<<n); i++) {
    12             for(int j = 0; j<(1<<n); j++) {
    13                 scanf("%lf", &a[i][j]);
    14             }
    15         }
    16         mem(dp);
    17         for(int i = 0; i<(1<<n); i++)
    18             dp[0][i] = 1;
    19         for(int i = 1; i<=n; i++) {
    20             for(int j = 0; j<(1<<n); j++) {
    21                 for(int k = 0; k<(1<<n); k++) {
    22                     if(((j>>(i-1))^1) == (k>>(i-1))) {
    23                         dp[i][j] += dp[i-1][j]*dp[i-1][k]*a[j][k];
    24                     }
    25                 }
    26             }
    27         }
    28         int ans;
    29         double maxx = 0;
    30         for(int i = 0; i<(1<<n); i++) {
    31             if(dp[n][i]>maxx) {
    32                 maxx = dp[n][i];
    33                 ans = i;
    34             }
    35         }
    36         cout<<ans+1<<endl;
    37     }
    38 }
  • 相关阅读:
    Pycharm快捷键
    unittest自动化测试框架
    Python简介
    Git工作流介绍
    GitFlow ⼯作流
    go 整分钟开始执行程序
    vue 保留两位小数
    vue 格式化时间戳
    Supervisor-进程守护工具
    为什么计算机语言中的变量名都不能以数字开头呢?
  • 原文地址:https://www.cnblogs.com/yohaha/p/5014213.html
Copyright © 2011-2022 走看看