cf581F 依赖背包+临时数组 好题
这题得加个临时数组才能做。。
/*
给定一棵树,树节点可以染黑白,要求叶子节点黑白平分
称连接黑白点的边为杂边,求使得杂边最少的染色方
那么设dp[i][j][0|1]表示i子树中有j个叶子节点,i染黑或白
那么其实是依赖背包,即枚举每个节点的字数v,进行分组即可
给dp初始化0x3f
边际条件:如果i是叶子节点,那么dp[i][i][0|1]=0;
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 5005
struct Edge{int to,nxt;}edge[maxn<<];
int n,k,flag[maxn],num[maxn],root,dp[maxn][maxn][],tot,head[maxn];
void init(){
memset(head,-,sizeof head);
tot++;
}
void addedge(int u,int v){
edge[tot].to=v;edge[tot].nxt=head[u];head[u]=tot++;
}
int dfs1(int u,int pre){
num[u]=;
if(flag[u]==)return num[u]=;
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(v!=pre)dfs1(v,u),num[u]+=num[v];
}
return num[u];
}
void dfs2(int u,int pre){
if(flag[u]==){
dp[u][][]=dp[u][][]=;
return;
} for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(v!=pre)dfs2(v,u);
} int tmp[maxn][];//临时数组,tmp[j]表示j个黑点的最小杂边
dp[u][][]=dp[u][][]=;//这两种情况
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(v==pre)continue; memset(tmp,0x3f,sizeof tmp); for(int j=num[u];j>=;j--)
for(int t=num[v];t>=;t--){
tmp[j][]=min(tmp[j][],dp[u][j-t][]+min(dp[v][t][],dp[v][t][]+));
tmp[j][]=min(tmp[j][],dp[u][j-t][]+min(dp[v][t][],dp[v][t][]+));
} for(int j=num[u];j>=;j--)//每次更新完一次tmp数组都要更新到dp里
dp[u][j][]=tmp[j][],dp[u][j][]=tmp[j][];
} }
int main(){
cin>>n;
int u,v;init();
for(int i=;i<n;i++){
cin>>u>>v;
addedge(u,v);addedge(v,u);
flag[u]++,flag[v]++;
}
if(n==){
printf("%d\n",n-);
return ;
} memset(dp,0x3f,sizeof dp);
root=;
while(flag[root]==)root++;
dfs1(root,);
k=num[root]/;
dfs2(root,);
printf("%d\n",min(dp[root][k][],dp[root][k][]));
}
cf581F 依赖背包+临时数组 好题的更多相关文章
- 依赖背包——cf855C好题
比较裸的依赖背包,但是想状态还是想了好久 转移时由于边界问题,虽然可以倒序转移,但当容量为0|1的时候,由于有初始值的存在 很难再原dp数组上进行修改,所以额外用tmp数组来保存修改后的值 #incl ...
- BZOJ.4182.Shopping(点分治/dsu on tree 树形依赖背包 多重背包 单调队列)
BZOJ 题目的限制即:给定一棵树,只能任选一个连通块然后做背包,且每个点上的物品至少取一个.求花费为\(m\)时最大价值. 令\(f[i][j]\)表示在点\(i\),已用体积为\(j\)的最大价值 ...
- 依赖背包优化——ural1018,金明的预算方案
经典题了,网上博客一大堆O(nCC)的做法,其实是可以将复杂度降到O(nC)的 参考依赖背包优化(泛化物品的并) 根据背包九讲,求两个泛化物品的和复杂度是O(CC)的,所以依赖背包暴力求解的复杂度是O ...
- 【HDU 4276】The Ghost Blows Light(树形DP,依赖背包)
The Ghost Blows Light Problem Description My name is Hu Bayi, robing an ancient tomb in Tibet. The t ...
- hdu 1561 The more, The Better (依赖背包 树形dp)
题目: 链接:点击打开链接 题意: 非常明显的依赖背包. 思路: dp[i][j]表示以i为根结点时攻击j个城堡得到的最大值.(以i为根的子树选择j个点所能达到的最优值) dp[root][j] = ...
- hdoj1010Starship Troopers (树dp,依赖背包)
称号:hdoj1010Starship Troopers 题意:有一个军队n个人要占据m个城市,每一个城市有cap的驻扎兵力和val的珠宝,并且这m个城市的占率先后具有依赖关系,军队的每一个人能够打败 ...
- BZOJ.4910.[SDOI2017]苹果树(树形依赖背包 DP 单调队列)
BZOJ 洛谷 \(shadowice\)已经把他的思路说的很清楚了,可以先看一下会更好理解? 这篇主要是对\(Claris\)题解的简单说明.与\(shadowice\)的做法还是有差异的(比如并没 ...
- bzoj4753: [Jsoi2016]最佳团体(分数规划+树形依赖背包)
菜菜推荐的“水题”虐了我一天T T...(菜菜好强强qwq~ 显然是个分数规划题,二分答案算出p[i]-mid*s[i]之后在树上跑依赖背包,选k个最大值如果>0说明还有更优解. 第一次接触树形 ...
- Gym - 100502G Outing (强连通缩点+树形依赖背包)
题目链接 问题:有n个人,最多选k个,如果选了某个人就必须选他指定的另一个人,问最多能选多少个人. 将每个人所指定的人向他连一条单向边,则每一个点都有唯一的前驱,形成的图是个基环树森林,在同一个强连通 ...
随机推荐
- HDFS笔记(一)
1. HDFS 是什么? Hadoop分布式文件系统(Distributed File System)-HDFS(Hadoop Distributed File System) 2. HDFS 架构 ...
- 20165221—JAVA第六周学习心得
课本知识点小结 第8章:常用实用类 String类 常量对象放入常量池中,而用string声明的对象变量中存放着引用.凡是new构造的常量都不在常量池中. startIndex表示提取字符的起始位置, ...
- GridView item设置点击背景
GridView item设置点击背景 android:listSelector="@android:color/transparent"
- Mysql多实例安装笔记
参考: 系统:KaliLinux (x86_64) 软件下载 1.下载地址: 2.选择5.6版本 安装 1.准备文件和目录 tar -zxvf mysql-5.6.40-linux-glibc2.12 ...
- ASP.NET Core中使用Autofac
⒈添加相关依赖 Install-Package Autofac ⒉扫描项目接口实现类 using Autofac; using System; using System.Collections.Gen ...
- Git使用手册【转】
转自:https://www.jianshu.com/p/e32a8e7ca93b 目录: Git是什么 基本概念 Git的诞生 Git的安装与配置 创建版本库 Git操作略览 远程仓库:git的杀招 ...
- linux添加swap分区【转】
概述 添加交换分区主要是因为安装oracle时碰到交换分区太小时无法安装的情况,这时候就需要添加交换分区了. 操作简介 增加swap分区方法: 1.新建磁盘分区作为swap分区 2.用文件作为swap ...
- 从运维角度来分析mysql数据库优化的一些关键点【转】
概述 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善. 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分 ...
- Vue父子组件和非父子组件传值问题
父组件跟子组件之间的传值(具体参考lonzhubb商城) 1.父组件传值给子组件形式,ifshop是要传的对象,右边ifshop代表要传的这个对象的数据,如果只是传常量,那么属性可以不用加':'(表示 ...
- vs 快捷键操作
各个版本可能不同,以vs 2013为例. 1.调试时,调出即时窗口:[Ctrl+Alt+i] 2.注释/取消注释:[Ctrl+K Ctrl+C]/[Ctrl+K Ctrl+U]