潜入行动 bzoj-5314 Jsoi-2018

题目大意题目链接

注释:略。


想法

学长给我们除了一套考试题,三个学长一人一道这是T1.

好吧好吧,傻逼背包......

复杂度$O(nk)$。

Code:

#include<bits/stdc++.h>
#define mod 1000000007
#define N 100010
using namespace std; typedef long long ll;
int n,K,size[N];
ll g[101][2][2]; int f[N][101][2][2];
int tot,head[N],nxt[N<<1],to[N<<1];
inline char nc() {static char *p1,*p2,buf[100000]; return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}
int rd() {int x=0; char c=nc(); while(!isdigit(c)) c=nc(); while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=nc(); return x;}
inline void OrzWinniechen(int &x,ll y) {x+y>=mod?x+=y-mod:x+=y;}
inline void add(int x,int y) {to[++tot]=y; nxt[tot]=head[x]; head[x]=tot;}
void dfs(int pos,int fa)
{
size[pos]=1; f[pos][0][0][0]=f[pos][1][1][0]=1;
for(int o=head[pos];o;o=nxt[o]) if(to[o]!=fa)
{
int v=to[o]; dfs(v,pos);
int kkk=min(size[pos],K),suika=min(size[v],K);
for(int i=0,r=kkk;i<=r;i++)
{
g[i][0][0]=f[pos][i][0][0],f[pos][i][0][0]=0;
g[i][0][1]=f[pos][i][0][1],f[pos][i][0][1]=0;
g[i][1][0]=f[pos][i][1][0],f[pos][i][1][0]=0;
g[i][1][1]=f[pos][i][1][1],f[pos][i][1][1]=0;
}
for(int i=0,r1=kkk;i<=r1;i++)
for(int j=0,r2=suika;i+j<=K&&j<=r2;j++)
{
// puts("OrzWinniechen");
OrzWinniechen(f[pos][i+j][0][0],
g[i][0][0]*f[v][j][0][1]%mod);
// printf("Shit %lld\n",f[pos][i+j][0][0]);
OrzWinniechen(f[pos][i+j][0][1],
(g[i][0][0]*f[v][j][1][1]
+g[i][0][1]*(f[v][j][0][1]
+f[v][j][1][1]))%mod);
// printf("Shit %lld\n",f[pos][i+j][0][1]);
OrzWinniechen(f[pos][i+j][1][0],
g[i][1][0]*(f[v][j][0][0]+f[v][j][0][1])%mod);
// printf("Shit %lld\n",f[pos][i+j][1][0]);
OrzWinniechen(f[pos][i+j][1][1],
(g[i][1][0]*(f[v][j][1][0]+f[v][j][1][1])
+g[i][1][1]*(f[v][j][0][0]+f[v][j][1][0])
+g[i][1][1]*(f[v][j][0][1]+f[v][j][1][1]))%mod);
// printf("Shit %lld\n",f[pos][i+j][1][1]);
}
size[pos]+=size[to[o]];
}
}
int main()
{
// freopen("polynomial.in","r",stdin);
// freopen("polynomial.out","w",stdout);
n=rd(),K=rd(); for(int i=1;i<n;i++) {int x=rd(),y=rd(); add(x,y); add(y,x);}
dfs(1,1);
printf("%d\n",(f[1][K][0][1]+f[1][K][1][1])%mod);
return 0;
}

小结:这种题其实只要做过一道就行了。

[bzoj5314][Jsoi2018]潜入行动_树形背包dp的更多相关文章

  1. BZOJ5314: [Jsoi2018]潜入行动

    BZOJ5314: [Jsoi2018]潜入行动 https://lydsy.com/JudgeOnline/problem.php?id=5314 分析: 裸树形背包,设\(f[x][i][0/1] ...

  2. HDU 1011 树形背包(DP) Starship Troopers

    题目链接:  HDU 1011 树形背包(DP) Starship Troopers 题意:  地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...

  3. 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp

    题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...

  4. 【bzoj1495】[NOI2006]网络收费 暴力+树形背包dp

    题目描述 给出一个有 $2^n$ 个叶子节点的完全二叉树.每个叶子节点可以选择黑白两种颜色. 对于每个非叶子节点左子树中的叶子节点 $i$ 和右子树中的叶子节点 $j$ :如果 $i$ 和 $j$ 的 ...

  5. 【bzoj4987】Tree 树形背包dp

    题目描述 从前有棵树. 找出K个点A1,A2,…,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. 输入 第一行两个正整数n,k,表示数的顶点数和需要选出的点个数. 接下 ...

  6. 【bzoj2427】[HAOI2010]软件安装 Tarjan+树形背包dp

    题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大).但是现 ...

  7. 【bzoj4753】[Jsoi2016]最佳团体 分数规划+树形背包dp

    题目描述 JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一位编号比他小的候选人Ri推荐.如果Ri=0则说明这个候选人是JYY自己看上的.为了 ...

  8. BZOJ_4753_[Jsoi2016]最佳团体_树形背包+01分数规划

    BZOJ_4753_[Jsoi2016]最佳团体_树形背包+01分数规划 Description JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人 ...

  9. [POJ1155]TELE(树形背包dp)

    看到这道题的第一眼我把题目看成了TLE 哦那不是重点 这道题是树形背包dp的经典例题 题目描述(大概的): 给你一棵树,每条边有一个cost,每个叶节点有一个earn 要求在earn的和大于等于cos ...

随机推荐

  1. CentOS7搭建LAMP

    阿里云CentOS7.3搭建 Apache+MySQL+PHP环境 参考https://www.cnblogs.com/apro-abra/p/4862285.html   一.安装Apache 1. ...

  2. QML中使用相对路径

    QML里有三种路径: 默认使用URL路径. "qrc:///filepath".这用来索引资源文件. "file:///绝对路径".这用来索引本地文件系统中的文 ...

  3. SQLite busy handler

    SQLite doesn't support high concurrency. In case of a lot of concurrent access from multi-process or ...

  4. Farseer.net轻量级ORM开源框架 V1.5版本升级消息

    SHA-1: 0ede88104f269f108b68be1e87ffcead4a354ec6 * 提交V1.5版本1.新增:整表缓存的实现方式(提取接口,可由客户端算定义实现)2.新增:SQL配置化 ...

  5. 洛谷 P2341 [HAOI2006]受欢迎的牛

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...

  6. python练习2 购物车程序

    # -*- coding: utf-8 -*-# @Time : 2018/10/18 16:06# @Author : Two Brother# @EMAIL : yeluyide@163.com# ...

  7. JavaSE-11 接口

    学习要点 接口的定义 接口作为约定 接口作为能力 接口 为什么使用接口 需求描述 要求实现防盗门的功能(防盗门:带锁的门). 需求分析 门有“开”和“关”的功能,锁有“上锁”和“开锁”的功能. 将门和 ...

  8. JAVA基础——设计模式之简单工厂模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂 ...

  9. enote笔记法的思考(ver0.2)

    章节:enote笔记法的思考   enote笔记法,它是一种独特的文本标记方式与呈现方式.这一整套系统的记笔记的方法,它能够帮助我们对文本内容(例如,其中的概念.观点.思想等)更加直观和条理地进行理性 ...

  10. MySQL 日志初探

    目录 MySQL 日志初探 零.概述 一.Error Log(错误日志) 二.General Query Log(通用查询日志) 三.Slow Query Log (慢查询日志) 四.Binary L ...