[HNOI2011]XOR和路径

嘟嘟嘟

一看到异或,就想到按位处理.
当处理到第\(i\)位的时候,\(f[u]\)表示节点\(u\)\(n\)的路径,这一位为\(1\)的期望,那么为\(0\)就是\(1 - f[u]\),于是有
\[f[u] = \frac{1}{d[u]} (\sum _ {v \in V, w = 0} f[v] + \sum _ {v \in V, w = 1} 1 - f[v])\]
因为是异或,所以如果边权这一位是0的话,应该加上\(f[v]\);否则加上\(1 - f[v]\)
然后整理一下
\[d[u] * f[u] - \sum _ {v \in V, w = 0} f[v] + \sum _ {v \in V, w = 1} f[v] = \sum _ {v \in V, w = 1} 1\]
于是就可以高斯消元了。
答案为\(\sum 2 ^ i * ans_i[1]\)

需要注意的是,重边只应该加一次,对应的度数也应该只加\(1\)

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<vector>
#include<stack>
#include<queue>
using namespace std;
#define enter puts("") 
#define space putchar(' ')
#define Mem(a, x) memset(a, x, sizeof(a))
#define rg register
typedef long long ll;
typedef double db;
const int INF = 0x3f3f3f3f;
const db eps = 1e-8;
const int maxn = 105;
const int maxe = 2e4 + 5;
inline ll read()
{ll ans = 0;char ch = getchar(), last = ' ';while(!isdigit(ch)) last = ch, ch = getchar();while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();if(last == '-') ans = -ans;return ans;
}
inline void write(ll x)
{if(x < 0) x = -x, putchar('-');if(x >= 10) write(x / 10);putchar(x % 10 + '0');
}int n, m, Max = 0;
int du[maxn];
struct Edge
{int nxt, to, w;
}e[maxe];
int head[maxn], ecnt = -1;
void addEdge(int x, int y, int w)
{e[++ecnt] = (Edge){head[x], y, w};head[x] = ecnt;
}db f[maxn][maxn], ans[maxn], Ans = 0;
void build(int x)
{Mem(f, 0);for(int i = 1; i < n; ++i)  //小于n{f[i][i] = du[i];for(int j = head[i]; j != -1; j = e[j].nxt)if((e[j].w >> x) & 1) ++f[i][e[j].to], ++f[i][n + 1];else --f[i][e[j].to];}
}
db Gauss()
{for(int i = 1; i <= n; ++i){int pos = i;for(int j = i + 1; j <= n; ++j)if(fabs(f[j][i]) > fabs(f[pos][i])) pos = j;if(pos != i) swap(f[i], f[pos]);db tp = f[i][i];if(fabs(tp) > eps) for(int j = i; j <= n + 1; ++j) f[i][j] /= tp;for(int j = i + 1; j <= n; ++j){db tp = f[j][i];for(int k = i; k <= n + 1; ++k) f[j][k] -= tp * f[i][k];}}for(int i = n; i; --i){ans[i] = f[i][n + 1];for(int j = i - 1; j; --j) f[j][n + 1] -= f[j][i] * f[i][n + 1];}return ans[1];
}int main()
{Mem(head, -1);n = read(); m = read();for(int i = 1; i <= m; ++i){int x = read(), y = read(), w = read();addEdge(x, y, w); ++du[x];if(x ^ y) addEdge(y, x, w), ++du[y];Max = max(Max, w);}for(int i = 0; (1 << i) <= Max; ++i)build(i), Ans += Gauss() * (1 << i);printf("%.3lf\n", Ans);return 0;
}

转载于:https://www.cnblogs.com/mrclr/p/10137454.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密)

一、大体流程图 二、PHP 项目文件加密 下表列出了Zend产品中的PHP版本及其内部API版本和Zend产品版本。 如何加密请往后看 三、如何使用 第一步&#xff1a;确认当前环境 Amai Phalcon 前&#xff0c;请确认您具备以下两个条件&#xff0c;如果您的环境不满足此条件&#xff0c…

前向声明

前向声明的定义&#xff1a;有些时候我们可以声明一些类但是并不去定义它&#xff0c;当然这个类的作用也很有限了。 如&#xff1a;class A; 声明一个foo类&#xff0c;这个声明&#xff0c;有时候也叫做前向声明(forward declaration)&#xff0c;在声明完这个foo类之后&…

php寻找文本,PHP文本数据库的搜索方法_php

//php文本数据库的搜索方法searchstr("/".preg_quote($searchstr)."/");//$searchstr是查找的关键字$recordsfile($file);//获取所有的记录数http://www.gaodaima.com/45906.htmlPHP文本数据库的搜索方法_php//$file是查找的数据文件$search_reocrdspreg_g…

react vs 2017_我在React Europe 2017上学到了什么

react vs 2017by Nicolas Cuillery由Nicolas Cuillery 我在React Europe 2017上学到了什么 (What I learned at React Europe 2017) Few days ago, the 3rd edition of the biggest React conference in Europe took place in Paris. No heatwave or transportation strike th…

rem 之js代码获取font-size值(适合移动手机端)

这两天学的是自适应&#xff0c;代码有点乱。而且这几天忙着写实习报告&#xff0c;也没有时间去整理。 但是&#xff0c;这下面代码吧&#xff0c;是可以获取html的font-size值的&#xff0c;然后用来设置相对单位rem的从而达到自适应效果的&#xff1b;看到红色的width了吧&a…

关于C#中委托的一点理解

C#中委托是一种类型。可以这么笼统的理解&#xff1a;int型变量代表一个整型&#xff0c;而委托类型的变量代表一个方法的地址&#xff08;将方法名称传入constructor并实例化该委托变量&#xff09;。 --By Brisk Yu 1 为何要使用委托 我觉得网上关于什么现实生活的举例并不好…

阿里的事前验尸_(不太完全)100天的代码-验尸

阿里的事前验尸by JS由JS (不太完全)100天的代码-验尸 ((Not quite) 100 Days of Code — A Postmortem) At the end of last year, I wrote about my experience coding and making daily commits to GitHub for 30 consecutive days. I also pledged to keep the streak goi…

php超市管理系统论文,超市管理系统的设计与实现

当今社会为信息社会&#xff0c;世界已经进入在计算机信息管理领域中激烈竞争的时代。对于一般的商户而言&#xff0c;杂乱无章地陈放着的商品无疑会耗费他们大量的时间去对其整理并一一分类。他们需要更加便捷的手段去管理他们的商品以节约他们的时间成本以及人工成本。并且就…

只能输入正整数 以及常用的正则表达式

<input typetext idSYS_PAGE_JumpPage nameSYS_PAGE_JumpPage size3 maxlength5 οnkeyupthis.valuethis.value.replace(/[^1-9]/D*$/,"") οndragenter"return false" οnpaste"return !clipboardData.getData(text).match(//D/)"" sty…

jq 自动滑动轮换(向后插入小块)

// JavaScript Documentvar Marquee { arrIdObj : {/*marqueebox : {distance:-95,//移动距离delay:3000,//延迟时间speed:1000//移动时间},minCount:2 */}, //创建对象 startMarquee:function(){ //给参数赋值 if(this.arrIdObj ! null && typeof this.arrIdObj &qu…

bzoj 2178 圆的面积并 —— 辛普森积分

题目&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id2178 先看到这篇博客&#xff1a;https://www.cnblogs.com/heisenberg-/p/6740654.html 好像本应算弓形面积、三角形面积之类的&#xff0c;但不会...于是用辛普森积分硬做... 参考了这篇博客&#xff1a;ht…

php获取访问者ip地址汇总,php获取访问者IP地址汇总_PHP

//方法1&#xff1a;$ip $_SERVER["REMOTE_ADDR"];echo $ip;//方法2&#xff1a;代码如下:$user_IP ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];$user_IP ($user_IP) ? $user_IP : $…

Charles抓包工具的使用

2019独角兽企业重金招聘Python工程师标准>>> 感谢唐巧分享的文章&#xff0c;受益匪浅 文章目录 1. 目录及更新说明2. Charles 限时优惠3. 简介4. 安装 Charles5. 将 Charles 设置成系统代理6. Charles 主界面介绍7. 过滤网络请求8. 截取 iPhone 上的网络封包 8.1. …

python每秒20个请求_使用Python每秒百万个请求

python每秒20个请求by Paweł Piotr Przeradowski通过PawełPiotr Przeradowski 使用Python每秒百万个请求 (A million requests per second with Python) Is it possible to hit a million requests per second with Python? Probably not until recently.使用Python每秒可以…

iOS开发——处理1000张图片的内存优化

一、项目需求 在实际项目中&#xff0c;用户在上传图片时&#xff0c;有时会一次性上传大量的图片。在上传图片前&#xff0c;我们要进行一系列操作&#xff0c;比如&#xff1a;旋转图片为正确方向&#xff0c;压缩图片等&#xff0c;这些操作需要将图片加载到内存中&#xff…

jquery ui php,php – 打开带有动态内容的jQuery UI对话框

我有一个关于jQuery UI对话框的问题,并显示数据库中的动态内容.所以我得到了一个web应用程序,我还需要创建一个管理模块来管理所有用户和其他信息.我创建了一个页面,显示列表中的所有用户,在每一行中我也创建了一个编辑按钮.我想这样做,当你按下用户的编辑按钮时,会打开一个对话…

linux shell的单行多行注释

1.单行注释&#xff0c;使用符号# echo "123456"echo "test"#echo "comment“ 2. 多行注释 &#xff08;1&#xff09;使用 :<<! &#xff01; filenametest.txt :<<! fileContentcat $filenamei0 for line in $fileContent dofileList[…

MapReduce Input Split 输入分/切片

MapReduce Input Split&#xff08;输入分/切片&#xff09;详解 public static long getMaxSplitSize(JobContext context) { return context.getConfiguration().getLong(SPLIT_MAXSIZE, Long.MAX_VALUE); } 如果没有设置这maxsize默认是Long.MAX_VALUE public static long …

win7无损扩大c盘空间_无损网络导航的空间模型

win7无损扩大c盘空间by Patryk Adaś通过PatrykAdaś 无损网络导航的空间模型 (A Spacial Model for Lossless Web Navigation) In my last post I described the concept of navigation trails as an evolution of the standard tabbed browsing model.在我的上一篇文章中&am…

php访问者信息,如何通过PHP检索访问者的ISP?

我试图纠正拉姆库马尔的答案,但每当我编辑他们的帖子,我将被暂时禁止,我的修改被忽略。(至于为什么,我不知道,这是我第一次也是唯一一次在这个网站上编辑。)由于网站更改和管理员执行基本的bot检查(检查标题),他的代码不再工作:$IP $_SERVER[REMOTE_ADDR];$User_Agent Mozill…