[bzoj5473] 仙人掌
Description
有一个n个点,m个边的仙人掌。所谓仙人掌,就是任何一个点至多属于一个环。
每个边有1/2的概率被删掉。问期望剩下多少个边联通块。
所谓边联通块,就是问剩下的边,构成多少个联通块,单独一个点不算做联通块。
输出答案乘以2m之后mod1000000007的结果。
Input
第一行两个整数n,m。以下m行,每行两个整数x,y,表示树的一条边。
1≤n≤1000000。
Output
一行一个整数表示答案
Sample Input
3 2
1 2
2 3
Sample Output
3
Solution
考虑每条边的贡献。
设一开始所有边都失效,答案为\(2^m\cdot n\)
对于每条边,会连接两个联通块,贡献为\(-2^{m-1}\),这部分总贡献为\(-m\cdot 2^{m-1}\)
由于是仙人掌,对于每个简单环,会有一条边没有负贡献,所以要加回来,这部分是\(2^{m-len}\)
然后对于单独的点,不能成为一个联通块,会对答案产生\(-2^{m-deg_i}\)的贡献。
反正瞎写就完事
#include<bits/stdc++.h>
using namespace std;void read(int &x) {x=0;int f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-f;for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';x*=f;
}void print(int x) {if(x<0) putchar('-'),x=-x;if(!x) return ;print(x/10),putchar(x%10+48);
}
void write(int x) {if(!x) putchar('0');else print(x);putchar('\n');}const int maxn = 2e6+10;
const int mod = 1000000007;int head[maxn],tot,dep[maxn],n,m,deg[maxn];
struct edge{int to,nxt;}e[maxn<<1];void add(int u,int v) {e[++tot]=(edge){v,head[u]},head[u]=tot;}
void ins(int u,int v) {add(u,v),add(v,u);}vector <int > len;void dfs(int x,int fa) {dep[x]=dep[fa]+1;for(int i=head[x];i;i=e[i].nxt)if(e[i].to!=fa) {if(!dep[e[i].to]) dfs(e[i].to,x);else if(dep[e[i].to]<dep[x]) len.push_back(dep[x]-dep[e[i].to]+1);}
}int qpow(int a,int x) {int res=1;for(;x;x>>=1,a=1ll*a*a%mod) if(x&1) res=1ll*res*a%mod;return res;
}int main() {read(n),read(m);for(int i=1,x,y;i<=m;i++) read(x),read(y),ins(x,y),deg[x]++,deg[y]++;dfs(1,0);int ans=1ll*qpow(2,m)*n%mod;ans=(ans-1ll*qpow(2,m-1)*m%mod)%mod;for(vector <int > :: iterator it=len.begin();it!=len.end();it++)ans=(ans+qpow(2,m-(*it)))%mod;for(int i=1;i<=n;i++) ans=(ans-qpow(2,m-deg[i]))%mod;write((ans%mod+mod)%mod);return 0;
}
转载于:https://www.cnblogs.com/hbyer/p/10270862.html
[bzoj5473] 仙人掌相关推荐
- BZOJ5473: 仙人掌
传送门 首先,所有连通块的个数的期望再减去每个点孤立的概率就是答案. 设 \(d_i\) 表示 \(i\) 的度数,那么每个点孤立的概率为 \(\frac{1}{2^{d_i}}\) 考虑计算所有连通 ...
- [bzoj5473]仙人掌
传送门 这个题首先可以考虑一个点也算作一个联通块 去掉所有的边那么答案即为\(2^m*n\) 然后发现每加上一条边就会使联通块的数量减1,这部分是\(-2^{m-1}*m\) 但是这是一个仙人掌图,在 ...
- Forest Program dfs+tanjar仙人掌
题目链接 CCPC2019 F题. 题意:给一颗仙人掌树,让你求每一个小环的边的个数,用快速幂即可求解. 思路:第一反应是tanjar乱搞,把每个环上的点取出来,类似于缩点的方法.但是忽然感觉dfs能 ...
- 基于卷积神经网络(CNN)的仙人掌图像分类
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天我们的目标是建立一个分类器,将图像分类为"仙人掌&q ...
- SHOI2008仙人掌图(tarjan+dp)
Solution 好题啊没的说. 本题需要求出仙人掌的直径,但仙人掌是一个带有简单环的一张图无法直接用树形dp求解,但它有一个好东西就是没有类似环套环的东西,所以我们在处理时就方便了一些. 思路:ta ...
- 电脑仙人掌机器人作文_神奇的仙人掌作文400字
1神奇的仙人掌作文400字 六年级作文 [神奇的仙人掌作文400字] 文 谭茜 地球上有许多神奇的事物,比如松树.芭蕉树.仙人掌--但我觉得最神奇的还是仙人掌. 仙人掌就是一个月不浇水也不会渴死,这与 ...
- COJ 0650 绝世难题(一) 可爱的仙人掌
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=620 绝世难题(一) 可爱的仙人掌 难度级别:E: 运行时间限制:1000m ...
- 2019.02.07 bzoj4316: 小C的独立集(仙人掌+树形dp)
传送门 题意:给出一个仙人掌森林求其最大独立集. 思路:如果没有环可以用经典的树形dpdpdp解决. fi,0/1f_{i,0/1}fi,0/1表示第iii个点不选/选的最大独立集. 然后fi,0+ ...
- [zjoi2017]仙人掌
前言 谨以此题纪念我第一次参加省选时刚了5h这一题得到0分的经历 题目相关 链接 题目大意 给出仙人掌定义:如果一个无自环无重边无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌 给出一个图 ...
最新文章
- 利用OpenCV识别玻璃纤维织物劈缝缺陷
- TP5 使用IN查询时如何限制条数
- 开源图像检索项目PicSearch is now an open source project
- 阿里云服务器部署SpringBoot项目(mysql安装、服务部署)
- InfluxDB 2.0 之Flux语法篇
- 使对易失性字段的操作原子化
- 在线预览word,excel文档
- opencv imshow 窗口无响应 the window does not seem to be responding. do you want to force
- python资料-整理了一周的Python资料,包含各阶段所需网站、项目,收藏了慢慢来...
- php常用加密函数总结
- 计算机类专业数学分数,同济大学计算机专业数学分数
- Arduino(MEGA2560)最小系统电路设计以及固件(bootloader)烧录方法(free)
- 第十篇:React 中的“栈调和”(Stack Reconciler)过程是怎样的?
- 高级转录组分析和R数据可视化火热报名中(2022.10)
- 猎人猎物优化算法HPO
- javase加强,十、IO流2
- 苹果地图错误将驾车者导向沙漠:偏离70公里
- 英语作文计算机国际会议开幕词,【国际会议开幕式】国际会议开幕词英文
- ui设计界面参数_参数化设计,可以更有效地设计用户界面
- 春招面试经验系列(九)蚂蚁金服
热门文章
- vscode win10笔记本 蓝屏_联想拯救者Win10蓝屏0xc000000d的解决办法
- opencv 读取NV12格式(.yuv)文件,并转为RGB格式保存为JPG
- ICPR MTWI 2018 挑战赛二:网络图像的文本检测
- ArcGIS:如何利用栅格数据进行路径网络分析-可达性分析?
- 校园网登录界面打不开,远程计算机或设备不接受链连接
- 浅析Spring之sessionFactory
- 宁波市教育学院计算机系主任,欢迎宁波诺丁汉大学计算机系主任白瑞斌教授一行到访南科大...
- 导致计算机科学硕士和计算机科学理学硕士,诺丁汉大学计算机科学理学硕士研究生offer一枚...
- 6-4 选队长 (10 分)
- js检测开发者工具是否打开 防止别人调试代码