题目链接:传送门

题目大意:有n个人决斗(n<=18),每两个人之间都有一定几率杀死对方,一次进行一次决斗,胜利者成为擂主继续接受决斗直到只剩下一个人,你是一号,问你最大有多大几率存活到最后。

题目思路:看到n<=18一般都能想到状态压缩DP,但是当时并没有想到怎么转移状态,下来补题发现了一个好博客讲的很详细 传送门

     最后自己理解完后也讲一讲大致的思路首先一个二维DP数组 dp[1<<n|1][n]  一维的二进制数代表哪些人存活,二维代表当前第几号为擂主,而这道题关键就是要倒着DP

     因为我们最后是让自己存活,所以边界条件是dp[1][0]=1;表示最后只有自己存活(当然自己就是擂主),然后用这个边界去反推所有人都存活的时候,然后枚举第一个擂主,

     选出最大值就是答案。

     状态转移方程 dp[i][j]=max(dp[i][j],dp[i^(1<<j)][k]*pic[k][j]+dp[i^(1<<k)][j]*pic[j][k]);

     其中dp[i^(1<<j)][k]*pic[k][j]表示j是擂主的时候被k打败了,所以j死亡,i^(1<<j)

     同理dp[i^(1<<k)][j]*pic[j][k]表示j是擂主时k挑战失败,所以k死亡,i^(1<<k)

     因为是反着DP,所以这里需要慢慢理解

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cctype>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <climits>
#define lson root<<1,l,mid
#define rson root<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
using namespace std;
#define gamma 0.5772156649015328606065120
#define MOD 1000000007
#define inf 0x3f3f3f3f
#define N 100005
#define maxn 20005
typedef pair<int,int> PII;
typedef long long LL; int n,k;
double pic[][];
double dp[<<|][]; int main(){
int i,j,group;
scanf("%d",&n);
for(i=;i<n;++i)for(j=;j<n;++j)scanf("%lf",&pic[i][j]);
dp[][]=;
for(i=;i<(<<n);++i){
for(j=;j<n;++j)
if(i&(<<j))
for(int k=;k<n;++k){
if(j==k||(!(i&(<<k))))continue;
dp[i][j]=max(dp[i][j],dp[i^(<<j)][k]*pic[k][j]+dp[i^(<<k)][j]*pic[j][k]);
}
}
double flag=;
for(i=;i<n;++i)
flag=max(flag,dp[(<<n)-][i]); ///所有人都存活时枚举第一个擂主
printf("%.12f\n",flag);
return ;
}

    

Codeforces 678E(Another Sith Tournament)的更多相关文章

  1. Codeforces 678E. Another Sith Tournament(概率DP,状压)

    Codeforces 678E. Another Sith Tournament 题意: n(n<=18)个人打擂台赛,给定任意两人对决的胜负概率,比赛规则:可指定一人作为最开始的擂主,每次可指 ...

  2. codeforces 678E Another Sith Tournament 概率dp

    奉上官方题解 然后直接写的记忆化搜索 #include <cstdio> #include <iostream> #include <ctime> #include ...

  3. Codeforces 678E Another Sith Tournament 状压DP

    题意: 有\(n(n \leq 18)\)个人打擂台赛,编号从\(1\)到\(n\),主角是\(1\)号. 一开始主角先选一个擂主,和一个打擂的人. 两个人之中胜的人留下来当擂主等主角决定下一个人打擂 ...

  4. Educational Codeforces Round 13 E. Another Sith Tournament 状压dp

    E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...

  5. Educational Codeforces Round 13 E. Another Sith Tournament 概率dp+状压

    题目链接: 题目 E. Another Sith Tournament time limit per test2.5 seconds memory limit per test256 megabyte ...

  6. CodeForces - 283E Cow Tennis Tournament

    Discription Farmer John is hosting a tennis tournament with his n cows. Each cow has a skill level s ...

  7. Codeforces 678E 状压DP

    题意:有n位选手,已知n位选手之间两两获胜的概率,问主角(第一个选手)最终站在擂台上的概率是多少? 思路:一看数据范围肯定是状压DP,不过虽然是概率DP,但是需要倒着推:我们如果正着推式子的话,初始状 ...

  8. 【Codeforces 356A】Knight Tournament

    [链接] 我是链接,点我呀:) [题意] n个人矩形m场比赛 每场比赛由编号为li~ri且之前没有被淘汰的人进行. 已知第i场的winner是xi winner会把这一场其他所有的人都淘汰. 问你n个 ...

  9. @codeforces - 913F@ Strongly Connected Tournament

    目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个选手参加了一场竞赛,这场竞赛的规则如下: 1.一开始,所有 ...

随机推荐

  1. 一些JS常用的方法

    /** * JS公用类库文件 */ (function(){ Tools = { W: window, D: document, Postfix: ".php", GetId: f ...

  2. input text 去掉标签下拉提示autocomplete

    autocomplete 属性 autocomplete 属性规定输入字段是否应该启用自动完成功能. 自动完成允许浏览器预测对字段的输入.当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在 ...

  3. 整站下载工具Teleport Pro

    http://zmingcx.com/download-tools-teleport-pro-full-stop.html Teleport Pro是一款功能强大的离线浏览器,不论规模多大的网站,只要 ...

  4. 为什么说Kindle难圆“中国梦”? 支撑Kindle模式成功的要素,在当下中国并不太具备

    http://www.huxiu.com/article/12993/1.html 6月7日更新:Kindle入华终于尘埃落定,苏宁将在下午4点在北京30家店面同时销售,首批产品为Kindle Pap ...

  5. cascade=CascadeType.ALL的深坑

     cascadetype是 级联的配置 all标示所有都级联操作   默认级联查询都是开启的 all标示 删除和update都级联操作 现在是 save的时候 他会级联保存一条数据 但是由于原有id已 ...

  6. atitit.破解 拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结

    atitit.破解  拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结 1. 自动获取手机短信方式的原理 1 2. 调用api 1 3. ----核心代码 2 4.  ...

  7. 发现一个nginx LUA开发Web App的框架

    nginx是个好东西, nginx的openrtsy发行版本更是个好东西. 今天又发现个好东西 :Moochine MOOCHINE - 一个简单的轻量级的web framework, 基于ngx_O ...

  8. H3C-WA2210升级

    前几天升级了2210固件,做个记录 首先吐槽一点:华为官方给出的公共下载账号yx800根本没用..下不了官方提供的固件资料 组网准备: 升级之前要先看看原机版本(dis ver): 在升级版本之前,请 ...

  9. SAML2.0 协议初识(三)——IDP

    IDP,即提供身份认证服务的一端,通常,当 IDP 接收到 SP 发送的 SAML 认证请求后,解析 SAMLRequest 参数,包括 acs 地址.SP EntityId.绑定方式.是否加密等信息 ...

  10. 内核补丁 patch

    https://www.kernel.org/diff/diffview.cgi?file=/pub/linux/kernel/v3.x/patch-3.18.12.xz