bzoj3090: Coci2009 [podjela]
这个范围明显树包的
然而值并不滋磁
想了一会发现可以带一维当前子树用了多少边,搞定当前向上还能送多少
然后发现会有搞不定的情况,要向上传负数
每次都要重新初始化,负数强制要要
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=; struct node
{
int x,y,next;
}a[maxn*];int len,last[maxn];
void ins(int x,int y)
{
len++;
a[len].x=x;a[len].y=y;
a[len].next=last[x];last[x]=len;
} int f[maxn][maxn],c[maxn],li[maxn];
void dfs(int x,int fr)
{
f[x][]=c[x];
li[x]=;
for(int k=last[x];k;k=a[k].next)
{
int y=a[k].y;
if(y!=fr)
{
dfs(y,x);
li[x]+=li[y]+;
for(int i=li[x];i>=;i--)
{
int d=f[][];
for(int j=min(i,li[y]);j>=;j--)
{
if(f[x][i-j]!=f[][]&&f[y][j]!=f[][]&&f[y][j]>=)
d=max(d,f[x][i-j]); if(i!=j&&f[x][i-j-]!=f[][]&&f[y][j]!=f[][])
d=max(d,f[x][i-j-]+f[y][j]);
}
f[x][i]=d;
}
}
} }
int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
int n,X;
scanf("%d%d",&n,&X);
for(int i=;i<=n;i++)
scanf("%d",&c[i]),c[i]=X-c[i];
int x,y; len=;
for(int i=;i<n;i++)
{
scanf("%d%d",&x,&y);
ins(x,y),ins(y,x);
}
memset(f,-,sizeof(f));
dfs(,);
for(int i=;i<n;i++)
if(f[][i]>=){printf("%d\n",i);break;} return ;
}
bzoj3090: Coci2009 [podjela]的更多相关文章
- BZOJ 3090: Coci2009 [podjela]
3090: Coci2009 [podjela] Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 23 Solved: 17[Submit][Statu ...
- BZOJ 3090: Coci2009 [podjela] (树形背包)
3090: Coci2009 [podjela] Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 45 Solved: 31[Submit][Statu ...
- 【BZOJ 3090】 树形DP
3090: Coci2009 [podjela] Description 有 N 个农民, 他们住在 N 个不同的村子里. 这 N 个村子形成一棵树.每个农民初始时获得 X 的钱.每一次操作, 一个农 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [COCI2009]Dvapravca 计算几何
[COCI2009]Dvapravca LG传送门 先给出考场上的\(O(n^3)\)乱搞方法:枚举一个蓝点和一个红点,找出过着两个点的直线,再枚举蓝点找出这条直线最多能往两边扩展多宽,最后枚举红点计 ...
- bzoj3086: Coci2009 dvapravca
Description 给定平面上的 N 个点, 其中有一些是红的, 其他是蓝的.现在让你找两条平行的直线, 使得在保证 不存在一个蓝色的点 被夹在两条平行线之间,不经过任何一个点, 不管是蓝色 ...
- bzoj3087: Coci2009 misolovke
Description [misolovke]给定一个 N*N 的网格.每个格子里至少会有一个捕鼠器, 并且已知每个格子里的捕鼠器个数.现在需要在 每一行 中选取恰好 K 个连续的格子, 把里面的捕鼠 ...
- luogu P4385 [COCI2009]Dvapravca
传送门 我真的弱,正解都不会还打了个错的暴力 考虑平行线与x轴平行,那么可以按照y为第一关键字升序,x为第二关键字升序排序,然后合法的一段红点就是连续的一段,答案也就是最大的连续红色段 推广到一般情况 ...
- P4385 [COCI2009]Dvapravca
首先特判掉蓝点数量\(<2\)的情况.没有蓝点答案就是\(n\),有一个蓝点可以枚举一个红点,选择过这个蓝点和红点的一条线和在无穷远处的平行线(即这条线对应的两个半平面). 这里认为过一个点是与 ...
随机推荐
- dockerfile各种命令解析
1.ADD命令,如果ADD的是压缩包,ADD之后会自动进行解压.....
- Annual Congress of MUD
Annual Congress of MUD 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Multiuser dungeon games, also called MUD games ...
- *AtCoder Regular Contest 096E - Everything on It
$n \leq 3000$个酱,丢进拉面里,需要没两碗面的酱一样,并且每个酱至少出现两次,面的数量随意.问方案数.对一给定质数取模. 没法dp就大力容斥辣.. $Ans=\sum_{i=0}^n (- ...
- 安卓解析XML文件
安卓解析XML文件 主要有三种方式:DOM解析.SAX解析.PULL解析 其中: DOM解析为等XMl文件全部加载后,然后根据需要解析的内容解析出所需的内容数据. SAX解析为从XML文件中执行一行, ...
- POSTMAN编写文档
第一步:创建文件夹: 同时创建全局变量: 第二步:创建分组文件夹: 第三步:添加请求: 类似正常调试,然后多了一步保存: 保存: 请求方式发生相应变化,同时颜色也发生变化,说明保存成功: ====== ...
- 通过css将元素固定在左下角
position:fixed; bottom:0; left:0;
- 前端和后端采用接口访问时的调用验证机制(基于JWT的前后端验证)(思路探讨)
说明:基于前后端,尤其是使用Ajax请求的接口,现在市面上网页上调用的Ajax基本都是没有验证的,如果单独提取之后可以无线的刷数据. 继上一篇http://www.cnblogs.com/EasonJ ...
- 利用systemtap定位ifconfig dropped数据包的原因
http://blog.chinaunix.net/uid-20662820-id-3842431.html 欢迎转载,转载请保留文章的完整性!Author: Tony <tingw.liu ...
- 取汉子拼音首字母的VB.Net方法
'/ <summary> '/ 获得一个字符串的汉语拼音码 '/ </summary> '/ <param name="strText">字符串 ...
- xgboost调参
The overall parameters have been divided into 3 categories by XGBoost authors: General Parameters: G ...