潜入行动 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. 【RSA】在 ASP.NET Core中结合web前端JsEncrypt.JS使用公钥加密,.NET Core使用私钥解密;

    有一个需求,前端web使用的是JsEncrypt把后端给的公钥对密码进行加密,然后后端对其进行解密: 使用的类库如下: 后端使用第三方开源类库Bouncy Castle进行RSA的加解密和生成PEM格 ...

  2. 学JAVA第二十二天,StringBuffer的好处

    五一的假期今天就结束了,又要回来上课了. 今天就写一下StringBuffer的好处吧. StringBuffer类的对象能够被多次的修改,并且不产生新的未使用对象. 也就是说,我们平时用String ...

  3. 5 Transforms 转移 笔记

    5 Transforms 转移 笔记   Transforms    Unfortunately, no one can be told what the Matrix is. You have to ...

  4. 一台机器运行多个JBoss多实例

    JBossXMLJVMTomcat应用服务器  我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关 ...

  5. 乐视max2 刷入第三方recovery 然后刷入root 包 root

    乐视max2 刷入第三方recovery 然后刷入root 包 root 第三方recovery:为奇兔 刷入root 包 https://share.weiyun.com/ddcdd5ea83956 ...

  6. 迅为iTOP-4418嵌入式开发板初体验

    iTOP-4418开发板预装 Android4.4.4 系统, 支持9.7 寸.7 寸.4.3 寸屏幕. 参数:核心板参数 尺寸 50mm*60mm高度 核心板连接器为1.5mmCPU ARM Cor ...

  7. Python3.0 操作MySQL数据库执行SQL语句

    py3不支持MySQLdb,需要导入pymysql模块 # coding: utf-8 # Team : Quality Management Center # Author:Carson # Dat ...

  8. javascript——js string 转 int 注意的问题——parseInt(转)

    <script>     var   str='1250' ;  alert( Number(str) );  //得到1250 alert(parseInt(str));  //得到12 ...

  9. “完美”解决微信小程序购物车抛物动画,在连续点击时出现计算错误问题,定时器停不下来。

    最近做,微信点餐小程序,遇到添加商品时出现抛物动画,参考借鉴了这位大神的方法 https://www.cnblogs.com/greengage/p/7815842.html 但出现了一个问题,连续点 ...

  10. HYSBZ - 2763 飞行路线(分层图最短路线)

    题目: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价 ...