B SRM 05 - YYL 杯 R1

背景&&描述

有一个拥有n个城市的国家。这个国家由n-1条边连接起来。有一天国家发生叛乱。叛军已占领了一些城市。如果叛军占领的城市中,存在两个城市之间有边直接相连,则称这种情况是坏的。现在并不知道叛军占领了那些城市,问有多少种情况是坏的?

输入格式

第1行一个正整数n,表示国家的大小

第2行到第n行,每行两个数字x, y,表示x,y之间有一条边。

输出格式

一个整数表示方案数,答案对(1e9+7)取模

样例输入

21 2

样例输出

1

数据范围与约定

  • 对于0%的数据,和样例一毛一样。
  • 对于前20%的数据,
  • 对于接下来10%的数据,保证给出的是一条链,且 1 <= n <= 1e5
  • 对于接下来20%的数据,保证只有一个点的度数,其他点度数,且 1 <= n <= 1e5
  • 对于接下来20%的数据,保证给出的是一棵满二叉树,且 1 <= n <= 1e5
  • 对于剩下的数据,1 <= n <= 1e5,

样例解释

只有1和2同时叛变时才满足题意。

这道题往补集上考虑会容易很多 所有的情况当然一共有2^n种 我们只要算出从点集V中选出若干个点构成点集S,满足S是一个独立集(即S中任意两点没有边直接相连)中S的数量x

答案就是2^n-x了 果然转换很重要

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
const int M=1e5+7,mod=1e9+7;
int read(){int ans=0,f=1,c=getchar();while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}return ans*f;
}
int n,first[M],cnt;
LL f[M][2],ans=1;
struct node{int to,next;}e[2*M];
void ins(int a,int b){cnt++; e[cnt].to=b; e[cnt].next=first[a]; first[a]=cnt;}
void insert(int a,int b){ins(a,b); ins(b,a);}
void dp(int x,int last){f[x][0]=f[x][1]=1;for(int i=first[x];i;i=e[i].next){int now=e[i].to;if(now==last) continue;dp(now,x);f[x][0]=(f[now][0]+f[now][1])%mod*f[x][0]%mod;f[x][1]=f[now][0]*f[x][1]%mod;}
}
int main()
{int x,y;n=read();for(int i=1;i<n;i++) x=read(),y=read(),insert(x,y);dp(1,0);for(int i=1;i<=n;i++) ans=ans*2%mod; printf("%lld\n",((ans-f[1][0]-f[1][1])%mod+mod)%mod);return 0;
}

View Code

转载于:https://www.cnblogs.com/lyzuikeai/p/7183873.html

汕头市队赛 yyl杯1 T2相关推荐

  1. 汕头市队赛 yyl杯1 T1

    A SRM 05 - YYL 杯 R1 背景 傻逼题 描述 给一个序列,序列里只有两种元素1和2.现在要从序列里选出一些非空子序列使得子序列里两种元素数量相同.问有多少种方案数? 输入格式 多组数据 ...

  2. 汕头市队赛 C SRM 05 - YYL 杯 R1 T3!

    C SRM 05 - YYL 杯 R1 背景 tjmak 描述 给一个大小为n的序列V.序列里的元素有正有负.问至少要删除多少个元素使得序列里不存在区间(要求非空)和 >= S.如果答案大于m, ...

  3. 汕头市队赛 SRM16 T2

    描述 猫和老鼠,看过吧?猫来了,老鼠要躲进洞里.在一条数轴上,一共有n个洞,位置分别在xi,能容纳vi只老鼠.一共有m只老鼠位置分别在Xi,要躲进洞里,问所有老鼠跑进洞里的距离总和最小是多少. 输入格 ...

  4. 广东汕头市队赛? T1 模拟

    骰子 (dice.pas/c/cpp) 1s 128MB 骰子.骰子就是很普通的骰子:骰子有六个面,分别标号1到6,三对面上的数字之和均为7. 游戏的地图:一个高为R宽为C的网格图. 骰子一开始的状态 ...

  5. 2018年国赛高教杯数学建模A题高温作业专用服装设计解题全过程文档及程序

    2018年国赛高教杯数学建模 A题 高温作业专用服装设计 原题再现   在高温环境下工作时,人们需要穿着专用服装以避免灼伤.专用服装通常由三层织物材料构成,记为I.II.III层,其中I层与外界环境接 ...

  6. java. 三个人比赛怎么写_两个乒乓球队进行比赛,找出三队赛手的名单

    [java]代码库import java.util.ArrayList; /** * 两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛 ...

  7. 乒乓球比赛 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比 请编程序找出三队赛手的名单。

    //:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.   //已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比 //,请编程序找出三队赛手 ...

  8. 国赛高教杯使用python/matlab必会基础数学建模-数据处理模块(课程4)

    前言:我看有人的博客学习资料本就是基础知识然后还整个付费专栏博客,那我就直接打破这一垄断,直接上干货免费资料供大家学习. 国赛高教杯数据处理全过程总结 数据存在的问题   ⚫ 数据预处理是数据挖掘中的 ...

  9. 2019年国赛高教杯数学建模E题薄利多销分析解题全过程文档及程序

    2019年国赛高教杯数学建模 E题 薄利多销分析 原题再现   "薄利多销"是通过降低单位商品的利润来增加销售数量,从而使商家获得更多盈利的一种扩大销售的策略.对于需求富有弹性的商 ...

最新文章

  1. 网络工程师_记录的一些真题_2017下半年上午
  2. Spring的datasource配置详解
  3. 用python实现TCP协议传输功能(客户端代码)
  4. gsoap的几个常用设置选项
  5. sys.dm_exec_query_stats的total_worker_time的单位是微秒还是毫秒
  6. 一次性送出25本北大出版社AI类当当最畅销的25本书!包括~机器学习、深度学习实战、数学基础等...
  7. 性能可靠塔式服务器,塔式服务器备受企业关注的原因有哪些
  8. HDU 5336 XYZ and Drops (模拟+搜索,详解)
  9. pgsql timestamp without time zone > character varying解决方案
  10. 【算法】动态规划之计算二项式系数(C++源码)
  11. 古代情感诗词top100
  12. java 有c基础的自学教程(全站最详细 没有之一)
  13. 网站DDOS攻击防护实战老男孩经验心得分享 【转】
  14. [UTCTF2020]sstv
  15. React实现支付宝支付代码
  16. Python 爬虫 Selenium 基本使用
  17. 用Python将excel数据插入到MySQL报错(1265, Data truncated for column ‘num‘ at row 1)
  18. SSM 框架整合-1
  19. 万历皇帝的金丝蟠龙翼善冠
  20. 一文读懂程序化交易算法交易量化投资高频交易统计利

热门文章

  1. 经典人脸识别算法(特征脸,FISHERFACE,LBP)
  2. 基于javaweb+springboot的健身房管理系统(Java+ssm+springboot)
  3. Java 函数优雅之道
  4. 《能源石化交易行业区块链应用白皮书》今天全文发布,可下载!
  5. Linux CentOS 开启root用户远程登录
  6. 为什么招聘程序员不喜欢招女生
  7. C++ 判断一幅图片中的两个矩形区域是否邻近
  8. HTTP通讯相关知识
  9. java request 方法_Request常用方法
  10. 【历史上的今天】7 月 10 日:iOS App Store 问世;台积电创始人出生;第一台被“越狱”的 iPhone