[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;上边距  右边距…

html文本对齐6,HTML对齐文本

我要像以下列方式显示页面上的文本&#xff1a;HTML对齐文本My Text: Text HereMy Text: More Text Here.........................................................Text from line above continued here.我有以下的标记只是为了测试&#xff1a;body {font-family: arial;}fo…

vue底部跳转_详解Vue底部导航栏组件

不多说直接上代码 BottomNav.vue&#xff1a;{{item.name}}export default{props:[idx],data(){return {items:[{cls:"home",name:"首页",push:"/home",icon:"../static/home.png",iconSelect:"../static/home_select.png"}…

Android Studio环境搭建

Android Studio环境搭建 个人博客 欢迎大家多多关注该独立博客。 ###[csdn博客]&#xff08;http://blog.csdn.net/peace1213&#xff09; 一直想把自己的经验分享出来&#xff0c;记得上次写博客还是ok6410的笔记。感觉时代久远啊。记得那个时候我还一心想搞硬件了。如今又一次…

hacktoberfest_Hacktoberfest和其他有趣的事情将在本周末在freeCodeCamp

hacktoberfestby Quincy Larson昆西拉尔森(Quincy Larson) Hacktoberfest和其他有趣的事情将在本周末在freeCodeCamp (Hacktoberfest and other fun things going on this weekend at freeCodeCamp) Earlier this month, the freeCodeCamp community turned 3 years old. And …

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…

iOS开发Swift篇—(七)函数(1)

一、函数的定义 &#xff08;1&#xff09;函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } &#xff08;2&#xff09;形参列表的格式 形参名1: 形参类型1, 形参名2: 形参类型2, … &#xff08;3&#xff09;举例&#xff1a;计算2个…

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

我们在使用电脑运行某些软件的时候&#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…

宣布JavaScript 2017状况调查

by Sacha Greif由Sacha Greif 宣布JavaScript 2017状况调查 (Announcing the State of JavaScript 2017 Survey) 让我们找出去年以来发生的变化&#xff01; (Let’s find out what’s changed since last year!) In a hurry? You can take the survey here.匆忙&#xff1f;…

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

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

JavaScript call()函数的应用

call([thisObj[,arg1[, arg2[, [,.argN]]]]]) call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 thisObj 可选项。将被用作当前对象的对象。 arg1, arg2, , argN 可选项。将被传递方法参数序…

hive 去重 字符串_hive函数

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

python word

代码&#xff1a; 1 #codingutf-82 __author__ zhm3 from win32com import client as wc4 import os5 import time6 import random7 import MySQLdb8 import re9 def wordsToHtml(dir):10 #批量把文件夹的word文档转换成html文件11 #金山WPS调用&#xff0c;抢先版的用KWPS&a…

aws lambda_如何为AWS Lambda实施日志聚合

aws lambdaby Yan Cui崔燕 如何为AWS Lambda实施日志聚合 (How to implement log aggregation for AWS Lambda) During the execution of a Lambda function, whatever you write to stdout (for example, using console.log in Node.js) will be captured by Lambda and sent…

【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…

mysql延时优化教程_Mysql优化之延迟索引和分页优化_MySQL

什么是延迟索引&#xff1f;使用索引查询出来数据&#xff0c;之后把查询结果和同一张表中数据进行连接查询&#xff0c;进而提高查询速度!分页是一个很常见功能&#xff0c;select ** from tableName limit ($page - 1 ) * $n ,$n通过一个存储过程插入10000条数据进行测试&…

【动态规划】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; 【动态规…