传送门

这题好神啊..好神啊..

首先得到简单的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]猴子的更多相关文章

  1. [BZOJ3150][Ctsc2013]猴子 期望dp+高斯消元

    3150: [Ctsc2013]猴子 Time Limit: 20 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 163  Solved: 10 ...

  2. BZOJ 3150 [Ctsc2013]猴子 ——期望DP 高斯消元

    一堆牌的期望等于每张牌的期望值和. 考虑三个人的游戏即可得到. 然后每张牌遇到另外一张的概率相同,然后就可以列方程求解了. #include <cmath> #include <cs ...

  3. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  4. 《饥荒游戏》SW BUG 刷猴子 & 刷淘气值 办法

    简介 该办法利用刷猴子的方式,通过杀猴子获取淘气值,从而刷出坎普斯,继而刷坎普斯背包 物品准备 灭火器x1 箱子x1 逗猴球x1 猴窝xN 帽贝岩x2 避雷针x1 操作步骤 1.灭火器建造在2个帽贝岩 ...

  5. c语言经典算法——猴子偷桃问题

    题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...

  6. 网络神器Greasemonkey(油猴子)使用方法简介+脚本分享【转载】

    推荐下,觉得这个方法有用, 今天艾薇百科来介绍一下功能强大的Greasemonkey,俗称"油猴子",Greasemonkey可以自由定制网页,实现你想要的各种功能.堪称" ...

  7. sicily 猴子选大王

    题目描述 猴子选大王,有N只猴子,从1-N进行编号.它们按照编号的顺时针方向,排成一个圆圈,然后从第一只猴子开始报数.第一只猴子报1,以后每只猴子报的数字都是它前面猴子所报数字加1.如果一只猴子报的数 ...

  8. 踩个猴尾不容易啊 Canvas画个猴子

    踩个猴尾不容易啊  Canvas画个猴子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...

  9. BZOJ2429[HAOI2006]聪明的猴子[最小生成树 kruskal]

    2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 896  Solved: 575[Submit][Statu ...

随机推荐

  1. Eclipse启动Server报错:Could not publish to the server. java.lang.NullPointerException

    转载自:http://m.blog.csdn.net/article/details?id=49862243 错误信息: publishing to tomcat v8.0 server at loc ...

  2. Java 数组详解 - 用法、遍历、排序、实用API

    数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标. 组成数组的各个变量称为数组的分量,也称为 ...

  3. win10系统下把Oracle卸载干净

    我和大家一样,遇到了一个问题,就是如何把Oracle从自己的电脑卸载干净,很多人都觉得很难把Oracle卸载干净,于是选择重装系统,因为解决不了Oracle没有卸载干净之后,重装不了的问题,有时候真的 ...

  4. node.js使用require给flume提交请求

      node.js使用require给flume提交请求 - 简书 https://www.jianshu.com/p/02c20e2d011a     玄月府的小妖在debug 关注 2017.04 ...

  5. SQL Server 常用分页SQL(转)

    发现网上好多都是错的.网上经常查到的那个Top Not in 或者Max 大部分都不实用,很多都忽略了Order和性能问题.为此上网查了查,顺带把2000和2012版本的也补上了. 先说说网上常见SQ ...

  6. 使用LoadRunner的Web(HTTP/HTML)协议录制手机app脚本

    一.打开HP Virtual User Generator,创建虚拟用户脚本,选择Web(HTTP/HTML)协议:

  7. 浅谈pipreqs组件(自动生成需要导入的模块信息)

    简介 pipreqs的作用 一起开发项目的时候总是要搭建环境和部署环境的,这个时候必须得有个python第三方包的list,一般都叫做requirements.txt. 如果一个项目使用时virtua ...

  8. (3.14) set statistics io/time/profile /SET SHOWPLAN_ALL ON详解统计信息与执行计划

    SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON  执行计划详细描述请参考(读懂执行计划) 对于语句的运行,除了执行计划本身,还有一些其他 ...

  9. 3D游戏引擎中常见的三维场景管理方法

    对于一个有很多物体的3D场景来说,渲染这个场景最简单的方式就是用一个List将这些物体进行存储,并送入GPU进行渲染.当然,这种做法在效率上来说是相当低下的,因为真正需要渲染的物体应该是视椎体内的物体 ...

  10. Spring框架第五篇之Spring与AOP

    一.AOP概述 AOP(Aspect Orient Programming),面向切面编程,是面向对象编程OOP的一种补充.面向对象编程是从静态角度考虑程序的结构,而面向切面编程是从动态角度考虑程序运 ...