这个范围明显树包的

然而值并不滋磁

想了一会发现可以带一维当前子树用了多少边,搞定当前向上还能送多少

然后发现会有搞不定的情况,要向上传负数

每次都要重新初始化,负数强制要要

#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]的更多相关文章

  1. BZOJ 3090: Coci2009 [podjela]

    3090: Coci2009 [podjela] Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 23  Solved: 17[Submit][Statu ...

  2. BZOJ 3090: Coci2009 [podjela] (树形背包)

    3090: Coci2009 [podjela] Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 45  Solved: 31[Submit][Statu ...

  3. 【BZOJ 3090】 树形DP

    3090: Coci2009 [podjela] Description 有 N 个农民, 他们住在 N 个不同的村子里. 这 N 个村子形成一棵树.每个农民初始时获得 X 的钱.每一次操作, 一个农 ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. [COCI2009]Dvapravca 计算几何

    [COCI2009]Dvapravca LG传送门 先给出考场上的\(O(n^3)\)乱搞方法:枚举一个蓝点和一个红点,找出过着两个点的直线,再枚举蓝点找出这条直线最多能往两边扩展多宽,最后枚举红点计 ...

  6. bzoj3086: Coci2009 dvapravca

    Description 给定平面上的 N 个点, 其中有一些是红的, 其他是蓝的.现在让你找两条平行的直线, 使得在保证    不存在一个蓝色的点 被夹在两条平行线之间,不经过任何一个点, 不管是蓝色 ...

  7. bzoj3087: Coci2009 misolovke

    Description [misolovke]给定一个 N*N 的网格.每个格子里至少会有一个捕鼠器, 并且已知每个格子里的捕鼠器个数.现在需要在 每一行 中选取恰好 K 个连续的格子, 把里面的捕鼠 ...

  8. luogu P4385 [COCI2009]Dvapravca

    传送门 我真的弱,正解都不会还打了个错的暴力 考虑平行线与x轴平行,那么可以按照y为第一关键字升序,x为第二关键字升序排序,然后合法的一段红点就是连续的一段,答案也就是最大的连续红色段 推广到一般情况 ...

  9. P4385 [COCI2009]Dvapravca

    首先特判掉蓝点数量\(<2\)的情况.没有蓝点答案就是\(n\),有一个蓝点可以枚举一个红点,选择过这个蓝点和红点的一条线和在无穷远处的平行线(即这条线对应的两个半平面). 这里认为过一个点是与 ...

随机推荐

  1. 转载: 找不到MSVCR90.dll、Debug vs Release及cppLapack相关

    今天调试程序时出现了,找不到MSCVR90.dll的错误,最好查找到了解决办法,原文链接如下:   http://hi.baidu.com/wpzhao/blog/item/72dc08f77ce9b ...

  2. ArrayList构造函数有哪些

    ArrayList 构造函数有(三种): public ArrayList(int initialCapacity) public ArrayList() public ArrayList(Colle ...

  3. bzoj3874&2832 [Ahoi2014]宅男计划 模拟退火,三分

    [Ahoi2014&Jsoi2014]宅男计划 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 962  Solved: 371[Submit][ ...

  4. Spring Open Session In View

    提出:session在应用层就关闭,所以持久化要在应用层,但是到了view层持久化则session已经关闭 解决:session延迟到view层再关闭 原理:session(整个requestScop ...

  5. 标准C程序设计七---23

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  6. 更改App名称

    To change the installed application name, in Xcode: 1. Select your Target on the left side under Gro ...

  7. Day 7 Linux之系统监控、硬盘分区等

    Linux之系统监控.硬盘分区等 系统监控 系统监视和进程控制工具—top和free 1) 掌握top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况, ...

  8. hdu4612 无向图中任意添加一条边后使桥的数量最少 / 无向图缩点+求树的直径

    题意如上,含有重边(重边的话,俩个点就可以构成了边双连通). 先缩点成树,在求数的直径,最远的连起来,剩下边(桥)的自然最少.这里学习了树的直径求法:第一次选任意起点U,进行bfs,到达最远的一个点v ...

  9. Louvain algorithm for community detection

    主要理解Louvain 算法中对于模块度的定义:模块度是评估一个社区网络划分好坏的度量方法,它的物理含义是社区内节点的连边数与随机情况下的边数只差,它的取值范围是 [−1/2,1).可以简单地理解为社 ...

  10. iOS APP 的生命周期

    1.在手机桌面上点击APP图标 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDi ...