BZOJ3150: [Ctsc2013]猴子
这题好神啊..好神啊..
首先得到简单的DP方程:
$f_{\{ i \}}=\frac{\sum_{i \ne j} f_ {\{ i,j \}} \times P_{(i,j)}}{N-1}$
然后存在这样一个关系:$f_{A \cup B}=f_{A}+f_{B}$。
所以上面那个DP方程就可以很愉悦的改为:
$f_{\{ i \}}=\frac{\sum_{i \ne j} (f_ {\{ i\}} +f_{\{ j \} } )\times P_{(i,j)}}{N-1}$
因为存在相互依赖关系,用高斯消元求解。
然后因为最后为了防止出现所有元素都为$0$的解,需要加上$\sum f_i =1$这一个限制条件。
//BZOJ 3150 //by Cydiater //2017.1.22 #include <iostream> #include <queue> #include <map> #include <cstdio> #include <cstring> #include <string> #include <ctime> #include <cmath> #include <algorithm> #include <iomanip> #include <cstdlib> #include <bitset> #include <set> #include <vector> using namespace std; #define ll long long #define up(i,j,n) for(int i=j;i<=n;i++) #define down(i,j,n) for(int i=j;i>=n;i--) #define cmax(a,b) a=max(a,b) #define cmin(a,b) a=min(a,b) #define db double const int MAXN=1005; db M[MAXN][MAXN],P[MAXN][MAXN]; int N,MM; char s[MAXN]; namespace solution{ void Prepare(){ scanf("%d%d",&N,&MM); up(i,1,N)up(j,1,N)scanf("%lf",&P[i][j]); up(i,1,N-1){ M[i][i]=1-N; up(j,1,N)if(i!=j){ M[i][j]+=P[i][j]; M[i][i]+=P[i][j]; } } up(i,1,N+1)M[N][i]=1; } void Guass(){ int waited; up(i,1,N){ waited=i; up(j,i+1,N)if(abs(M[j][i])>abs(M[waited][i]))waited=j; if(i!=waited)up(j,i,N+1)swap(M[waited][j],M[i][j]); up(j,i+1,N){ db f=M[j][i]/M[i][i]; up(k,i,N+1)M[j][k]-=f*M[i][k]; } } down(i,N,1){ up(j,i+1,N)M[i][N+1]-=M[i][j]*M[j][N+1]; M[i][N+1]/=M[i][i]; } } void Solve(){ Guass(); while(MM--){ scanf("%s",s); int len=strlen(s); db ans=0; up(i,0,len)if(s[i]=='1')ans+=M[i+1][N+1]; printf("%.8lf\n",ans); } } } int main(){ //freopen("input.in","r",stdin); using namespace solution; Prepare(); Solve(); return 0; }
BZOJ3150: [Ctsc2013]猴子的更多相关文章
- [BZOJ3150][Ctsc2013]猴子 期望dp+高斯消元
3150: [Ctsc2013]猴子 Time Limit: 20 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 163 Solved: 10 ...
- BZOJ 3150 [Ctsc2013]猴子 ——期望DP 高斯消元
一堆牌的期望等于每张牌的期望值和. 考虑三个人的游戏即可得到. 然后每张牌遇到另外一张的概率相同,然后就可以列方程求解了. #include <cmath> #include <cs ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 《饥荒游戏》SW BUG 刷猴子 & 刷淘气值 办法
简介 该办法利用刷猴子的方式,通过杀猴子获取淘气值,从而刷出坎普斯,继而刷坎普斯背包 物品准备 灭火器x1 箱子x1 逗猴球x1 猴窝xN 帽贝岩x2 避雷针x1 操作步骤 1.灭火器建造在2个帽贝岩 ...
- c语言经典算法——猴子偷桃问题
题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...
- 网络神器Greasemonkey(油猴子)使用方法简介+脚本分享【转载】
推荐下,觉得这个方法有用, 今天艾薇百科来介绍一下功能强大的Greasemonkey,俗称"油猴子",Greasemonkey可以自由定制网页,实现你想要的各种功能.堪称" ...
- sicily 猴子选大王
题目描述 猴子选大王,有N只猴子,从1-N进行编号.它们按照编号的顺时针方向,排成一个圆圈,然后从第一只猴子开始报数.第一只猴子报1,以后每只猴子报的数字都是它前面猴子所报数字加1.如果一只猴子报的数 ...
- 踩个猴尾不容易啊 Canvas画个猴子
踩个猴尾不容易啊 Canvas画个猴子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...
- BZOJ2429[HAOI2006]聪明的猴子[最小生成树 kruskal]
2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 896 Solved: 575[Submit][Statu ...
随机推荐
- [LeetCode] Maximum Subarray Sum
Dynamic Programming There is a nice introduction to the DP algorithm in this Wikipedia article. The ...
- CH5202 自然数拆分Lunatic版【完全背包】
5202 自然数拆分Lunatic版 0x50「动态规划」例题 描述 给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复.求拆分的方案数 mod 2147483648的结 ...
- 修改Linux的基本配置(如主机名、ip等)
1.修改主机名 vi /etc/sysconfig/network 2.修改ip地址(注意修改完了后,reboot) 查看网卡的命令: ifconfig 开启网卡的命令: ifup eth0 修改ip ...
- Foj1683矩阵快速幂水题
Foj 1683 纪念SlingShot 题目链接:http://acm.fzu.edu.cn/problem.php?pid=1683 题目:已知 F(n)=3 * F(n-1)+2 * F(n-2 ...
- authz_core_module
w https://httpd.apache.org/docs/trunk/mod/mod_authz_core.html codeigniter index.html .htaccess <I ...
- django允许外部访问
默认方法启动django python manage.py runserver 这时启动的服务只能在本机访问,这是因为服务只向本机(127.0.0.1:8000)提供,所以局域网的其他机器不能访问. ...
- Travel---hdu5441(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:是有n个城市,m条边包含u v w:代表u到v的时间是w: 给q的时间x,求在x时间内Ja ...
- Python并行编程(二):基于线程的并行
1.介绍 软件应用中使用最广泛的并行编程范例是多线程.通常一个应用有一个进程,分成多个独立的线程,并行运行.互相配合,执行不同类型的任务. 线程是独立的处理流程,可以和系统的其他线程并行或并发地执行. ...
- 【Servlet】把文件写到Respond输出流里面供用户下载
本文区分于<[Jsp]把Java写到Respond输出流里面供用户下载>(点击打开链接)把原本该打印到控制台的内容,直接打印到一个文本文件txt中给用户下载. 实际上是<[Strut ...
- Sping-Spring JDBC框架
JDBC框架概述 在使用普通的JDBC数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但Spring JDBC框架负责所有的底层细节,从开始打开连接,准备和执行SQL语句,处理 ...