LA4788
贪心
这个贪心不太懂啊 dfs返回子树需要的最小值,然后按需要减消耗排序,然后贪心选取即可。
#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
const int N = ;
struct Node {
int a, g, c;
} node[N];
vector<int> G[N];
int cost[N], mx[N];
int n, ans, tot, kase;
bool cp(int i, int j)
{
return cost[i] == cost[j] ? mx[i] > mx[j] : cost[i] < cost[j];
}
bool cp1(int i, int j)
{
return mx[i] - cost[i] > mx[j] - cost[j];
}
int dfs(int u, int last)
{
int ret = ;
vector<PII> vt;
vt.clear();
for(int i = ; i < G[u].size(); ++i)
{
int v = G[u][i];
if(v == last) continue;
int need = dfs(v, u);
cost[u] += cost[v];
vt.push_back(make_pair(need - cost[v], need));
}
sort(vt.begin(), vt.end());
int pprev = ;
for(int i = vt.size() - ; i >= ; --i)
{
PII x = vt[i];
ret += max(x.second - pprev, );
pprev = max(pprev, x.second);
pprev -= x.second - x.first;
}
if(ret + node[u].g >= node[u].a) ret += node[u].g;
else ret = node[u].a;
cost[u] += node[u].g;
return ret;
}
int main()
{
while(scanf("%d", &n))
{
if(!n) break;
for(int i = ; i <= n; ++i)
{
scanf("%d%d%d", &node[i].a, &node[i].g, &node[i].c);
node[i].g += node[i].c;
}
for(int i = ; i <= n; ++i) G[i].clear();
for(int i = ; i < n; ++i)
{
int u, v;
scanf("%d%d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
ans = << ;
for(int i = ; i <= n; ++i)
{
memset(mx, , sizeof(mx));
memset(cost, , sizeof(cost));
ans = min(ans, dfs(i, ));
}
printf("Case %d: %d\n", ++kase, ans);
}
return ;
}
LA4788的更多相关文章
随机推荐
- PHP 之phpqrcode类库生成二维码
<?php /** * Created by PhpStorm. * User: 25754 * Date: 2019/6/4 * Time: 15:53 */ include "./ ...
- Python 之beautifulSoup4解析库
一.节点选择器 from bs4 import BeautifulSoup if __name__ == '__main__': html = ''' <div> <ul> & ...
- pycharm执行代码可以跑,但放到linux跑就报文件找不到
代码中包含当前路径 使用pycharm执行python,当前路径就是pycharm项目所在的路径,所以不会报错 但使用shell执行python,当前路径就会从shell所在的路径去找文件,所以找不到 ...
- Python总结2
时间:25日上午'''列表定义:在[]内,可以存放多个任意类型的值,并以逗号隔开''''students=['sb','2b']print(students[1])student_info=['min ...
- 【实战】用request爬取拉勾网职位信息
from urllib import request import urllib import ssl import json url = 'https://www.lagou.com/jobs/po ...
- 零基础学习Python培训,应该选择哪个培训班?
近几年中,Python一直是市场上最受欢迎的编程语言之一.它语法自然,入门简单,同时应用范围又极广,无论是大火的人工智能.大数据还是传统的web开发.自动化运维,Python都能够大展拳脚.根据职友集 ...
- POJ3278——Catch That Cow
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 114140 Accepted: 35715 ...
- 7-13 航空公司VIP客户查询 (25 分)
题意: 思路: 读完题目之后的第一思路就是用map将客户的id(string类型)与里程road(int类型)形成映射,然后直接用id查找添加里程或输出里程.但是400ms的限制妥妥的超时了.然后意识 ...
- Redis防护建议
1.Redis本身防护 (1)不要使用默认端口(6379) (2)增加Redis用户名和密码 (3)在Redis绑定指定IP访问(位置配置文件[redis.config]中的bind节点)2.L ...
- 腾讯云,搭建Docker环境
安装与配置 Docker 任务时间:10min ~ 20min 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下 ...