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\),有一个蓝点可以枚举一个红点,选择过这个蓝点和红点的一条线和在无穷远处的平行线(即这条线对应的两个半平面). 这里认为过一个点是与 ...
随机推荐
- Spoj-VISIBLEBOX Decreasing Number of Visible Box
Shadowman loves to collect box but his roommates woogieman and itman don't like box and so shadowman ...
- request,response,session,cookie,application
A:request 客服端向服务器端请求 JAVA讲究封装,所以Request也是某个东西的封装,到底是什么东西呢? 按字面意思:请求! 从Http协议说起,当你发一个请求到服务端的时候,你会把一些信 ...
- OI 数论整理
1.素数: 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数. 2016 ...
- 【Codevs1907】方格取数3(最小割)
题意:在一个有m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. n,m<=30 思路:如果 ...
- MYsql 锁详解 锁 与索引的关系
原文:http://blog.csdn.net/xifeijian/article/details/20313977#t10 mysql innodb的锁是通过锁索引来实现的. select ...
- 2017 ACM/ICPC Asia Regional Guangxi Online 记录
题目链接 Guangxi 感觉这场比赛完全是读题场啊…… 比赛过程中丢失了一波进度,最后想开题的时候已经来不及了…… Problem A 按题意模拟……按照那个矩阵算就可以了 #include &l ...
- Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第104篇原创 文章工程:* JDK 1.8* M ...
- python 获取时间 存入文件
1读文件: file_path_name = '/home/robot/bzrobot_ws/src/bzrobot/bzrobot_comm/led_show_data/'+file_name+'. ...
- NRapid前言
开发工具 Visual Studio 2017 数据库 SQL Server 2012 相关技术 Asp.net MVC
- python发声
python发声 学习了:http://www.jb51.net/article/62644.htm import winsound winsound.Beep(600,1000) #其中600表示声 ...