bzoj2337
这句话感觉都能成定理了:
xor问题逐位考虑……
这道题就是这样,然后和bzoj3143和相似
但这道题多了自环,于是我们设f[i]表示当前位由i走到n的后为1的数学期望
显然f[n]=0,可得f[i]=sigma((1/d[i])*f[j])(如果边权这位为0)+sigma((1/d[i])*(1-f[j]))(边权这位为1)
然后高斯消元即可
type node=record
po,len,next:longint;
end; var w:array[..] of node;
b,d,p:array[..] of longint;
a:array[..,..] of extended;
n,m,x,y,z,len,t,i,j,k:longint;
c,ans:extended; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; procedure swap(var a,b:extended);
var c:extended;
begin
c:=a;
a:=b;
b:=c;
end; procedure add(x,y,z:longint);
begin
inc(len);
w[len].po:=y;
w[len].len:=z;
w[len].next:=p[x];
p[x]:=len;
end; procedure work;
var i,j,k,p:longint;
begin
for i:= to n- do
begin
p:=i;
for k:=i+ to n- do
if abs(a[k,i])>abs(a[p,i]) then p:=k;
if p<>i then
begin
for j:=i to n+ do
swap(a[p,j],a[i,j]);
end;
for k:=i+ to n- do
if abs(a[k,i])> then
begin
for j:=n+ downto i do
a[k,j]:=a[k,j]-a[i,j]*a[k,i]/a[i,i];
end;
end;
a[n,n+]:=;
for i:=n- downto do
begin
for j:=i+ to n- do
a[i,n+]:=a[i,n+]-a[j,n+]*a[i,j];
a[i,n+]:=a[i,n+]/a[i,i];
end;
end; begin
readln(n,m);
for i:= to m do
begin
readln(x,y,z);
if z<> then t:=max(t,trunc(ln(z)/ln()));
inc(d[x]);
inc(d[y]);
if x=y then dec(d[x])
else add(y,x,z);
add(x,y,z);
end;
for i:= to t do
begin
fillchar(a,sizeof(a),);
for j:= to n do
a[j,j]:=;
for k:= to n do
begin
j:=p[k];
while j<> do
begin
y:=w[j].po;
if w[j].len and ( shl i)= then a[k,y]:=a[k,y]-/d[k]
else begin
a[k,y]:=a[k,y]+/d[k];
a[k,n+]:=a[k,n+]+/d[k];
end;
j:=w[j].next;
end;
end;
work;
ans:=ans+ shl i*a[,n+];
end;
writeln(ans::);
end.
bzoj2337的更多相关文章
- 【BZOJ2337】Xor和路径(高斯消元)
[BZOJ2337]Xor和路径(高斯消元) 题面 BZOJ 题解 我应该多学点套路: 对于xor之类的位运算,要想到每一位拆开算贡献 所以,对于每一位拆开来看 好了,既然是按位来算 我们就只需要计算 ...
- [BZOJ2337][HNOI2011]XOR和路径(概率+高斯消元)
直接不容易算,考虑拆成位处理. 设f[i]表示i到n的期望路径异或和(仅考虑某一位),则$f[y]=\sum\limits_{exist\ x1\to y=0}\frac{f[x1]}{d[x1]}+ ...
- 【BZOJ2337】[HNOI2011]XOR和路径 期望DP+高斯消元
[BZOJ2337][HNOI2011]XOR和路径 Description 题解:异或的期望不好搞?我们考虑按位拆分一下. 我们设f[i]表示到达i后,还要走过的路径在当前位上的异或值得期望是多少( ...
- BZOJ2337: [HNOI2011]XOR和路径
题解: 异或操作是每一位独立的,所以我们可以考虑每一位分开做. 假设当前正在处理第k位 那令f[i]表示从i到n 为1的概率.因为不是有向无环图(绿豆蛙的归宿),所以我们要用到高斯消元. 若有边i-& ...
- Bzoj2337:[HNOI2011]XOR和路径
题面 bzoj Sol 设\(f[i]\)表示\(i到n\)的路径权值某一位为\(1\)的期望 枚举每一位,高斯消元即可 不要问我为什么是\(i\ - \ n\)而不可以是\(1\ - \ i\) # ...
- BZOJ2337: [HNOI2011]XOR和路径(期望 高斯消元)
题意 题目链接 Sol 期望的线性性对xor运算是不成立的,但是我们可以每位分开算 设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值 转移方程为 \[f[i] = ...
- bzoj千题计划191:bzoj2337: [HNOI2011]XOR和路径
http://www.lydsy.com/JudgeOnline/problem.php?id=2337 概率不能异或 但根据期望的线性,可以计算出每一位为1的概率,再累积他们的期望 枚举每一位i,现 ...
- bzoj2337 XOR和路径
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2337 首先:因为是异或和,所以可以考虑每一位考虑. 就在每一位上求一下该位是1的概率,乘以1 ...
- BZOJ2337:[HNOI2011]XOR和路径(高斯消元)
Description 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的“XOR 和”最大.该路径可以重复 ...
随机推荐
- MyBatis返回主键,MyBatis Insert操作返回主键
MyBatis返回主键,MyBatis Insert操作返回主键 >>>>>>>>>>>>>>>>> ...
- java-字符串学习总结
Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类. String 类相关基础认知: 1.String类是final的,不可被继承.public fin ...
- C#当中的多线程_线程池
3.1 简介 线程池主要用在需要大量短暂的开销大的资源的情形.我们预先分配一些资源在线程池当中,当我们需要使用的时候,直接从池中取出,代替了重新创建,不用时候就送回到池当中. .NET当中的线程池是受 ...
- hadoop_并行写操作思路_2
如果想实现将 Client端的 File并行写入到 各个Datanode中, 首先, 应该修改的是,DistributedFileSystem中的create方法, 在create 内部调用FSNam ...
- MvvmCross[翻译] 使用Xamarin与MvvmCross完成一个跨平台App
总览 原文:https://github.com/MvvmCross/MvvmCross/wiki/Tip-Calc-A-first-app 我们所做的第一个Model-View-ViewModel( ...
- CSS 列表
CSS列表属性作用如下: 设置不同的列表项标记为有序列表 设置不同的列表项标记为无序列表 设置列表项标记为图像 列表 在HTML中,有两种类型的列表: 无序列表 - 列表项标记用特殊图形(如小黑点.小 ...
- POJ 3280 Cheapest Palindrome(DP 回文变形)
题目链接:http://poj.org/problem?id=3280 题目大意:给定一个字符串,可以删除增加,每个操作都有代价,求出将字符串转换成回文串的最小代价 Sample Input 3 4 ...
- libctemplate——C语言模块引擎简介及使用
前言 由先声明此libctemplate不是Google那个ctemplate.这个库是用C语言实现的,只有一个实现文件和一个头文件.Gooogl的ctemplate是C++实现的,和线程还扯上了关系 ...
- Savelog项目总结回忆
Savelog项目的细节已经不太记得,感觉有些遥远,需要翻回旧的笔记本电脑或者是旧的笔记本. 概述: 本项目采用的Linux C,监听一个或多个特殊的端口,当其中一个端口有发起连接时就产生一个新的线程 ...
- Eclipse中文乱码解决汇总(应该比较全):
Eclipse中文乱码解决汇总(应该比较全,欢迎补充): 方法一: 把GBK改成utf-8. 方法二: Window->preference->general->content ty ...