Bzoj1917 [Ctsc2010]星际旅行
Time Limit: 10 Sec Memory Limit: 259 MB
Submit: 185 Solved: 118
Description
Input
Output
Sample Input
2 6 2
0 1
1 2
Sample Output
7
8
HINT
40%的数据N≤500
100%的数据中N≤50000。
所有星球的离开次数限制满足1≤Hi≤40000,且每个星球的Hi大于等于与该星球直接相连的星球数(即度数)。
Source
树形DP
每个星球的Hi大于等于度数,即是说可以先遍历全图一遍并回到0点。
之后开始DP
需要用到网络流中的“退流”思想:如果相邻两点度数足够多,就可以来回走积累次数,如果这样使得之后的离开次数不够用了,就从前面退一次
/*by SilverN*/
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
struct edge{
int v,nxt;
}e[mxn<<];
int hd[mxn],mct=;
void add_edge(int u,int v){
e[++mct].v=v;e[mct].nxt=hd[u];hd[u]=mct;return;
}
int n,h[mxn],f[mxn];
int smm=;
int ans[mxn];
void DFS(int u,int fa){
for(int i=hd[u],v;i;i=e[i].nxt){
v=e[i].v;
if(v==fa)continue;
DFS(v,u);
int tmp=min(h[v],h[u]);
h[v]-=tmp;h[u]-=tmp;
if(h[v])f[u]=v;
smm+=tmp<<;
}
return;
}
int mrk[mxn];
void DP(int u,int fa){
ans[u]=smm;
for(int i=hd[u],v;i;i=e[i].nxt){
v=e[i].v;
if(v==fa)continue;
if(h[u]){
h[u]--;smm++;
DP(v,u);
h[u]++;smm--;
}
else if(f[v]){
h[f[v]]--;smm++;
DP(v,u);
h[f[v]]++;smm--;
}
else{
h[v]++;smm--;
DP(v,u);
h[v]--;smm++;
}
}
return;
}
int main(){
int i,j,u,v;
n=read();
for(i=;i<=n;i++)h[i]=read();
for(i=;i<n;i++){
u=read()+;v=read()+;
add_edge(u,v);add_edge(v,u);
--h[u];--h[v];
}
smm=(n-)<<;
DFS(,);
DP(,);
for(i=;i<=n;i++){
printf("%d\n",ans[i]);
}
return ;
}
Bzoj1917 [Ctsc2010]星际旅行的更多相关文章
- [CTSC2010]星际旅行
https://www.luogu.org/problemnew/show/P4189 题解 模拟费用流. 首先有一个非常好的条件,每个点的限制次数都大于等于这个点的度数. 然后我们可以从\(0\)开 ...
- 题解 洛谷 P4189 【[CTSC2010]星际旅行】
一个比较直接的想法就是对每个点进行拆点,拆成入点和出点,限制放在入点和出点相连的边上,然后跑最大费用最大流即可. 但是这样复杂度无法接受,所以考虑模拟费用流来解决本题. 发现 \(H\) 都大于等于该 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [CTSC2010]珠宝商 SAM+后缀树+点分治
[CTSC2010]珠宝商 不错的题目 看似无法做,n<=5e4,8s,根号算法? 暴力一: n^2,+SAM上找匹配点的right集合sz,失配了直接退出 暴力二: O(m) 统计过lca=x ...
- [CTSC2010]性能优化
[CTSC2010]性能优化 循环卷积快速幂 两个注意点:n+1不是2^k*P+1形式,任意模数又太慢?n=2^k1*3^k2*5^k3*7^k4 多路分治!深刻理解FFT运算本质:分治,推式子得到从 ...
- 【BZOJ1921】【CTSC2010】珠宝商(点分治,后缀自动机)
[BZOJ1921][CTSC2010]珠宝商(点分治,后缀自动机) 题面 洛谷 BZOJ权限题 题解 如果要我们做暴力,显然可以以某个点为根节点,然后把子树\(dfs\)一遍,建出特征串的\(SAM ...
- 7.18 NOIP模拟测试5 星际旅行+砍树+超级树
T1 星际旅行 题意:n个点,m条边,无重边,有自环,要求经过m-2条边两次,2条边一次,问共有多少种本质不同的方案.本质不同:当且仅当至少存在一条边经过次数不同. 题解:考试的时候理解错题,以为他是 ...
- P4218 [CTSC2010]珠宝商
P4218 [CTSC2010]珠宝商 神题... 可以想到点分治,细节不写了... (学了个新姿势,sam可以在前面加字符 但是一次点分治只能做到\(O(m)\),考虑\(\sqrt n\)点分治, ...
- 「题解」:07.18NOIP模拟赛T1:星际旅行
问题 A: 星际旅行 时间限制: 1 Sec 内存限制: 256 MB 题面 题面谢绝公开. 考试心路历程 拿到这道题感觉很懵逼,所以先搞的T2和T3,最后码了个暴力,结果还不如直接输出‘0’得分高 ...
随机推荐
- Linux使用imagemagick的convert命令压缩图片,节省服务器空间
1,安装imagemagick yum install ImageMagick 2,获取图片 find ./ -regex '.*\(jpg\|JPG\|png\|jpeg\)' -size +500 ...
- (原)Android到IOS开发的转换(一)
序)闲扯几句 很早就想入手ios开发,但是一直没有机会,个人没有水果机器,上个公司上班的那台mac mini虽然就在我身边,灰都有一层了,但是一直没有机会开机学习下,因为事多,自上一篇文章后,离职后, ...
- Git创建project
1.登录创建新仓库 命名 2.https://gitforwindows.org/ 下载git的windows客户端,输入git查看是否成功 3.创建文件夹,写内容并查看,和linux指令一样 4. ...
- Jmeter使用时异常问题解决
1.执行jmeter请求时,响应数据中出现乱码异常(如图) 解决方案: 打开E:\apache-jmeter-4\bin\jmeter.properries(jmeter安装目录),查找到语句行:#s ...
- asm和file system之间数据文件的转换
How to move a datafile from a file system to ASMMoving a datafile from the file system can be achive ...
- Visual Studio 2015安装包
点击下载
- Chrome 与 Firefox-Dev 的 DevTools
不管是做爬虫还是写 Web App,Chrome 和 Firefox 的 DevTools 都是超常用的,但是经常发现别人的截图有什么字段我找不到,别人的什么功能我的 Chrome 没有,仔细一搜索才 ...
- Linux 远程主机安全配置
开启了新的 Linux 服务器后,首要任务是做安全配置. 首先更新: # ubuntu sudo apt-get update # 获取 apt 源的软件列表 sudo apt-get upgrade ...
- 官方文档 恢复备份指南八 RMAN Backup Concepts
本章内容 Consistent and Inconsistent RMAN Backups Online Backups and Backup Mode Backup Sets Image Copie ...
- JavaScript - arguments object
The arguments object is an Array-like object corresponding to the arguments passed to a function. fu ...