[JSOI2018]潜入行动

1464677-20190122212942831-1626081968.png

题解

一道思路不难但是写起来很麻烦的树形背包

我们发现每个节点有很多信息需要保留

所以就暴力的设\(f[u][j][0/1][0/1]\)表示点u的子树分配了j个监察器,点u有没有被控制,点u放没放监察器

然后就分四种情况暴力讨论就好了

注意背包的时候要卡常数

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
const int M = 100005 ;
const int N = 103 ;
const int mod = 1e9 + 7 ;
using namespace std ;
inline int read() {char c = getchar() ; int x = 0 , w = 1 ;while(c>'9'||c<'0') { if(c=='-') w = -1 ; c = getchar() ; }while(c>='0' && c<='9') { x=x*10+c-'0' ; c = getchar() ; }return x*w ;  
}int n , m , num , hea[M] ;
int f[M][N][2][2] , g[N][2][2] , size[M] ;
struct E { int nxt , to ; } edge[M * 2] ;
inline void add_edge(int from , int to) {edge[++num].nxt = hea[from] ; edge[num].to = to ; hea[from] = num ;
}
void dfs(int u , int father) {size[u] = 1 ; f[u][0][0][0] = f[u][1][0][1] = 1 ;for(int i = hea[u] ; i ; i = edge[i].nxt) {int v = edge[i].to ; if(v == father) continue ; dfs(v , u) ;for(int j = 0 ; j <= min(m , size[u]) ; j ++) {g[j][0][0] = f[u][j][0][0] ; f[u][j][0][0] = 0 ;g[j][0][1] = f[u][j][0][1] ; f[u][j][0][1] = 0 ;g[j][1][0] = f[u][j][1][0] ; f[u][j][1][0] = 0 ;g[j][1][1] = f[u][j][1][1] ; f[u][j][1][1] = 0 ;}for(int j = 0 ; j <= min(size[u] , m) ; j ++) {for(int k = 0 ; k <= size[v] && j + k <= m ; k ++) {f[u][j + k][0][0] = (f[u][j + k][0][0] + 1LL * g[j][0][0] * f[v][k][1][0]) % mod ;f[u][j + k][0][1] = (f[u][j + k][0][1] + 1LL * g[j][0][1] * (f[v][k][1][0] + f[v][k][0][0]) % mod) % mod ;f[u][j + k][1][0] = ((f[u][j + k][1][0] + 1LL * g[j][1][0] * (f[v][k][1][0] + f[v][k][1][1]) % mod) % mod + 1LL * g[j][0][0] * f[v][k][1][1] % mod) % mod ;f[u][j + k][1][1] = ((f[u][j + k][1][1] + 1LL * g[j][1][1] * (((f[v][k][1][0] + f[v][k][1][1]) % mod + f[v][k][0][0] ) % mod + f[v][k][0][1]) % mod ) % mod + 1LL * g[j][0][1] * (f[v][k][0][1] + f[v][k][1][1]) % mod) % mod ;}}size[u] += size[v] ;}
}
int main() {n = read() ; m = read() ; for(int i = 1 , u , v ; i < n ; i ++) {u = read() ; v = read() ;add_edge(u , v) ; add_edge(v , u) ;}dfs(1 , 1) ;printf("%d\n",(f[1][m][1][0] + f[1][m][1][1]) % mod) ;return 0 ;
}

转载于:https://www.cnblogs.com/beretty/p/10306252.html

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

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

相关文章

css。元素样式、边框样式

1.外边距  margin 缩写形式&#xff1a; margin&#xff1a;上边距  右边距  下边距  左边距 margin&#xff1a;上下边距  左右边距 margin&#xff1a;上边距  左右边距  下边距 2.内边距  padding 缩写形式&#xff1a; padding&#xff1a;上边距  右边距…

C# 动态创建数据库三(MySQL)

前面有说明使用EF动态新建数据库与表&#xff0c;数据库使用的是SQL SERVER2008的&#xff0c;在使用MYSQL的时候还是有所不同 一、添加 EntityFramework.dll &#xff0c;System.Data.Entity.dll &#xff0c;MySql.Data, MySql.Data.Entity.EF6 注意&#xff1a;Entity Frame…

如何用计算机管理员权限,教你电脑使用代码添加管理员权限的详细教程

我们在使用电脑运行某些软件的时候&#xff0c;可能需要用到管理员权限才能运行&#xff0c;通常来说直接点击右键就会有管理员权限&#xff0c;但最近有用户向小编反馈&#xff0c;在需要管理员权限的软件上点击右键没有看到管理员取得所有权&#xff0c;那么究竟该如何才能获…

activiti 5.22的demo运行

activiti 5.22的demo运行 从github上clon下来的activiti项目,运行demo项目activiti-webapp-explorer2时&#xff0c;在使用到流程设计工作区&#xff0c;选取activiti modeler作为设计器的时候报错。 从下面的报错信息中发现&#xff0c;请求路径http://localhost:8080/activit…

内是不是半包围结构_轻钢别墅的体系结构

一、轻钢别墅介绍1、轻钢别墅的屋面系统轻钢别墅屋面系统是由屋架、结构OSB面板、防水层、轻型屋面瓦&#xff08;金属或沥青瓦&#xff09;组成的。轻钢结构的屋面&#xff0c;外观可以有多种组合。材料也有多种。在保障了防水这一技术的前提下&#xff0c;外观有了许多的选择…

hive 去重 字符串_hive函数

Hive是建立在 Hadoop 上的数据仓库基础架构,定义了简单的类 SQL 查询语言(HQL)函数分类&#xff1a;简单内置函数&#xff1a;数学函数&#xff0c;字符函数&#xff0c;日期函数&#xff0c;条件函数&#xff0c;聚合函数。高级内置函数&#xff1a;行列转换函数&#xff0c;分…

【Python3爬虫】为什么你的博客没人看呢?

我相信对于很多爱好和习惯写博客的人来说&#xff0c;如果自己的博客有很多人阅读和评论的话&#xff0c;自己会非常开心&#xff0c;但是你发现自己用心写的博客却没什么人看&#xff0c;多多少少会觉得有些伤心吧&#xff1f;我们今天就来看一下为什么你的博客没人看呢&#…

泰安高考2021成绩查询,泰安高考成绩查询入口2021

高考结束之后&#xff0c;为了方便大家进行高考成绩的查询&#xff0c;下面跟着出国留学网小编来一起看看“泰安高考成绩查询入口2021”&#xff0c;仅供参考&#xff0c;希望对大家有帮助。2021山东高考成绩查询时间及志愿填报时间根据山东2021年夏季高考须知&#xff0c;2021…

用GitHub Issue取代多说,是不是很厉害?

2019独角兽企业重金招聘Python工程师标准>>> 摘要: 别了&#xff0c;多说&#xff0c;拥抱Gitment。 2017年6月1日&#xff0c;多说正式下线&#xff0c;这多少让人感觉有些遗憾。在比较了多个博客评论系统&#xff0c;我最终选择了Gitment作为本站的博客评论系统&a…

【动态规划】Vijos P1313 金明的预算方案(NOIP2006提高组第二题)

题目链接&#xff1a; https://vijos.org/p/1313 题目大意&#xff1a; m(m<32000)金钱&#xff0c;n&#xff08;n<60&#xff09;个物品&#xff0c;花费vi&#xff0c;价值vi*ci,每个物品可能有不超过2个附件&#xff0c;附件没有附件。 题目思路&#xff1a; 【动态规…

计算机网络应用答题卡,2013-2014学年第2学期11级计算机网络技术毕业考试试卷

2013-2014学年第2学期11级《计算机网络技术》课程毕业考试试卷得分&#xff1a;一、单项选择题&#xff1a;(每题1分&#xff0c;共30分&#xff0c;答案必须写在后面的选择题答题卡内&#xff0c;否则不得分)1、计算机网络可以按网络的覆盖范围来划分&#xff0c;以下()不是按…

为什么那些每三年跳一次槽的人越跳越好? - 震撼

现在&#xff0c;人们已经放下了对跳槽的偏见。这是一件好事。之前。假设你每几年换一次工作&#xff0c;人们会认为你的简历上有 “污点”。面试官会认为你无法胜任一份工作。与同事相处不好。或者你对公司不忠诚&#xff0c;不能承担任务&#xff0c;等等。 这样的想法非常快…

矢量合成和分解的法则_专题14 运动的合成与分解

运动的合成与分解【基础回顾】 考点内容:运动的合成与分解 考纲解读: 1.掌握曲线运动的概念、特点及条件. 2.掌握运动的合成与分解法则&#xff0e; 考点一 物体做曲线运动的条件及轨迹分析 1&#xff0e;条件  (1)因为速度时刻在变&#xff0c;所以一定存在加速度&#xff1…

Java Persistence with MyBatis 小结2

MyBatis 最关键的组成部分是 SqlSessionFactory&#xff0c;我们可以从中获取 SqlSession&#xff0c;并执行映射的 SQL 语句。SqlSessionFactory 对象可以通过基于 XML 的配置信息或者 Java API 创建。 1 mybatis环境&#xff0c;environments 配置默认的数据库环境 MyBatis 支…

c#时分秒毫秒微妙_你真的清楚DateTime in C#吗?

DateTime&#xff0c;就是一个世界的大融合。日期和时间&#xff0c;在我们开发中非常重要。DateTime在C#中&#xff0c;专门用来表达和处理日期和时间。本文算是多年使用DateTime的一个总结&#xff0c;包括DateTime对象的整体应用&#xff0c;以及如何处理不同的区域、时区、…

解决Eclipse的Team菜单中没有SVN选项的问题

刚开始自己拿一个项目&#xff0c;手练一下发觉在Eclipse的Team找不到SVN仓库&#xff0c;看了一下才发觉使用SVN向SVN服务器上传代码&#xff0c;但Eclipse默认情况下却没有SVN选项&#xff0c;刚开始也是这样的 默认只有GIT&#xff0c;如下图所示 想要解决这些问题&#xff…

怎么用计算机怎么截屏,电脑怎么截图 这几个方法操作简便且实用

在日常的生活当中我们在使用电脑的时候经常会碰一些喜欢的文字、图片无法保存的情况&#xff0c;面对这样的状况&#xff0c;我们想要将这些东西保留下来那就会用到电脑截图了&#xff0c;这个方法可以很轻松的就将我们无视无法保存的情况而将这些东西给保留下来。那么电脑要怎…

python socket 多人聊天室

参考来源&#xff08;其实我从上面复制了一点&#xff09;&#xff1a;Python 的 Socket 编程教程 http://www.oschina.net/question/12_76126Python线程指南 http://www.open-open.com/lib/view/open1345476194313.htmlPython Socket文档 https://docs.python.org/3/library/…

mxm智能教育机器人无法智能对话_零代码使用腾讯TBP打造智能对话机器人

点击观看大咖分享心疼你独自一人承担生活的苦难&#xff0c;寂寞夜里陪伴你的只剩无人倾诉的压抑和无处安放的焦虑。养个宠物&#xff0c;它却不能get到你的“宠言宠语”。找个伴侣&#xff0c;还要浪费吵架的时间和精力。回到家里&#xff0c;只能浸泡在“循环唠叨式“母爱的沐…

怎么更换锁定计算机的图片,Win10系统下怎样对锁定界面的背景图片进行更换

用户在唤醒睡眠状态的win10系统时&#xff0c;最先看到就是锁定界面。在界面中&#xff0c;一般有时间日期、星期几&#xff0c;及默认的背景图片。那么&#xff0c;win10系统锁定界面中的背景图片可以修改吗&#xff1f;下面&#xff0c;小编就给大家分享Win10系统更换锁定界面…