【SRM-05 B】无题?
Description
有一个拥有n个城市的国家。这个国家由n-1条边连接起来。有一天国家发生叛乱。叛军已占领了一些城市。如果叛军占领的城市中,存在两个城市之间有边直接相连,则称这种情况是坏的。现在并不知道叛军占领了那些城市,问有多少种情况是坏的?
Input
第1行一个正整数n,表示国家的大小
第2行到第n行,每行两个数字x, y,表示x,y之间有一条边。
Output
一个整数表示方案数,答案对(1e9+7)取模
Sample Input
2
1 2
Sample Output
1
HINT
1 <= n <= 1e5,1<=x,y<=n,x≠y
以下题解搬运自出题人yyl:“直接做dp应该也是可以的。但是补集转化之后,我们发现其实就是问从点集V中选出若干个点构成点集S,满足S是一个独立集(即S中任意两点没有边直接相连)。设方案数为x。答案就是2^n -x。”
补充:最后输出2^n -x时因为涉及取模,要注意处理负数的情况。
1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define ll long long 5 using namespace std; 6 const int N=1e5+5; 7 const int mod=1e9+7; 8 int n,x,y,cnt,head[N]; 9 struct edge{int to,next;}e[N*2]; 10 ll ansn=1,dp[N][2]; 11 int read() 12 { 13 int x=0,f=1;char c=getchar(); 14 while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} 15 while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} 16 return x*f; 17 } 18 void ins(int u,int v){cnt++;e[cnt].to=v;e[cnt].next=head[u];head[u]=cnt;} 19 void solve(int x,int fa) 20 { 21 dp[x][1]=dp[x][0]=1; 22 for(int i=head[x];i;i=e[i].next) 23 { 24 int to=e[i].to; 25 if(to==fa)continue; 26 solve(to,x); 27 dp[x][0]=(dp[to][0]+dp[to][1])%mod*dp[x][0]%mod; 28 dp[x][1]=dp[to][0]*dp[x][1]%mod; 29 } 30 } 31 int main() 32 { 33 n=read(); 34 for(int i=1;i<n;i++) 35 { 36 x=read();y=read(); 37 ins(x,y);ins(y,x); 38 } 39 solve(1,0); 40 for(int i=1;i<=n;i++)ansn=(ansn*2)%mod; 41 printf("%lld",((ansn-dp[1][0]-dp[1][1])%mod+mod)%mod); 42 return 0; 43 }
View Code
转载于:https://www.cnblogs.com/zsnuo/p/7169713.html
【SRM-05 B】无题?相关推荐
- 汕头市队赛 C SRM 05 - YYL 杯 R1 T3!
C SRM 05 - YYL 杯 R1 背景 tjmak 描述 给一个大小为n的序列V.序列里的元素有正有负.问至少要删除多少个元素使得序列里不存在区间(要求非空)和 >= S.如果答案大于m, ...
- 汕头市队赛 yyl杯1 T1
A SRM 05 - YYL 杯 R1 背景 傻逼题 描述 给一个序列,序列里只有两种元素1和2.现在要从序列里选出一些非空子序列使得子序列里两种元素数量相同.问有多少种方案数? 输入格式 多组数据 ...
- 汕头市队赛 yyl杯1 T2
B SRM 05 - YYL 杯 R1 背景&&描述 有一个拥有n个城市的国家.这个国家由n-1条边连接起来.有一天国家发生叛乱.叛军已占领了一些城市.如果叛军占领的城市中,存在两个城 ...
- Sanity Check: SRM, AA test
Sanity Check 是实验后第一件要做的事,来保证实验进行地正确(主要在randomization:internal validity方面).主要由两方面组成:SRM(sample ratio ...
- 2021年全国大学生电子设计大赛每一个注意问题11.05
2021年全国大学生电子设计大赛注意问题11.05 A,信号失真度测量装置 B,三相AC-DC变换电路 C 三端口DC-DC变换器 D,基于互联网的摄像测量系统 E 数字-模拟信号混合传输收发机 F ...
- 2008年05月22日
2008年05月22日 无题 长得丑不是你的原因,但没有信心和力量就是你的错了 哀悼日的结束 5月22日为期3天的哀悼日结束了,但下面的数据永远不能忘记: '据民政部报告,截至21日12时,四川汶 ...
- Go 中 time.Parse 报错:year/month/day hour/minute/second out of range 时间格式化为什么是 2006-01-02 15:04:05?
1. 问题现象 在使用 Go 语言的 time.Parse 解析时间时遇到以下错误: func main() {timeParse, err := time.Parse("2006-11-0 ...
- [Buzz.Today]2011.05.25
>> VMWare的Open Source Pass - CloudFoundry VMWare推出了开源Pass:CloudFoundary,但是现在只是支持少数几种语言与环境:Java ...
- 互动网计算机频道图书7日销售排行(05.20-05.26)
互动网计算机频道图书7日销售排行(05.20-05.26) 1.Hadoop权威指南(中文版) 2.人人都是产品经理 3.演讲之禅:一位技术演讲家的自白 内容简介 本书既实用又引人入胜.作为职业演讲家 ...
- 函数05 - 零基础入门学习C语言36
第七章:函数05 让编程改变世界 Change the world by program 函数的嵌套调用 嵌套定义就是在定义一个函数时,其函数体内又包含另一个函数的完整定义. 然而,C语言不能嵌套定义 ...
最新文章
- 利用基于GPU的AI模拟一个现实宇宙 仅需36分钟
- latex 常用小结
- 科大星云诗社动态20210310
- 【数据竞赛】Kaggle神技:一项堪比Dropout的NN训练技巧!
- 【大数据学习-hadoop1】大数据如何处理
- js与html编码不同,js与html中unicode编码的使用
- Hough 圆变换----Matlab实现
- Python实现过段时间计算机自动锁屏小程序
- 蔚来:ET7首批预生产车正式下线
- 实现左侧固定宽度, 右侧自适应的两栏布局常见方法
- C语言(面积计算器)不能输入负数[程序以要求]
- 1999年秋浙江省计算机等级考试二级c 编程题,2004年秋浙江省计算机等级考试二级C 编程题(2) (C++代码)...
- 用计算机制作演示文稿教案博客,信息技术:《制作演示文稿的一般过程》教案...
- Topsis与熵权法
- 低成本5W无线充电器方案FS68001B简便充电芯片
- tomcat jquery mysql_Docker 搭建 Tomcat + Mysql
- 应用软件之xx文库破解器
- mysql 索引(2)(索引失效的问题及解决)
- 安装ps显示计算机丢失adobe,win7系统安装PS显示检查许可证所需的adobe application manager丢失或损坏的解决方法...
- EXCEL VBA常用语句100句
热门文章
- 疯狂的java 目录_疯狂创客圈 JAVA 高并发 总目录
- mysql open-files-limit_在mysql 5.5中更改open-files-limit
- Java中包装类型和基本类型的使用场景(阿里开发规范)
- 学习笔记~~~~~python基础
- django+ajax+表格加载,如何使用ajax在Django-admin表格内联中读取/写入输入字段?
- 判定2022年是否闰年c语言_C语言接本真题分享19年(2)
- python入门知识大全_python基础知识有哪些
- 电脑常见的VGA、DVI、PS/2、USB等接口知识笔记,值得收藏!
- 电脑故障维修:新手必看的修电脑技巧!
- 【前端】网页布局基础