\(\\\)

\(Description\)


给出一棵以\(1\)为根的\(N\)个节点的树,开始的时候你在\(1\)号节点。

除了\(1\)号节点以外,每个点都有访问次数限制\(t_i\),即到达该点的次数上限。

除了\(1\)号点每个点还有一个权值\(w_i\),这个权值可以是负的,每个点被第一次到达时你会被迫得到他的点权,以后该点点权变为\(0\)。

求满足所有次数上限的前提下,从\(1\)号点出发,最后回到\(1\)号点的一条路径所得到的最大点权和,每个点可以经过多次。

同时你还要输出这个最大点权和对应的方案是否唯一。

  • \(N\in [1,10^5]\)

\(\\\)

\(Solution\)


  • 第一问直接树形\(DP\)就好,从根节点到当前点的路径会消耗一次当前点的访问次数,而每次从子树回溯上来也会消耗一次访问次数,所以对于节点\(u\),最多只能选\(t_u-1\)棵子树访问。直接\(DFS\)后将子树最大贡献排序,在所有正数答案里选前\(t_u-1\)个子树作为自己的答案。

  • 关于方案唯一性的问题,维护一个\(g\)数组表示当前节点最优解是否唯一。转移时只要有一个子树方案数有多种当前节点的方案数就是多种。同时如果下一个要选择的子树(因为访问上限的关系不能选)和当前最后一个选择的子树答案相同,或者答案中选择了包含贡献为\(0\)的子树,方案也不是唯一的。

\(\\\)

\(Code\)


#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 100010
#define R register
#define gc getchar
#define inf 200000000
using namespace std;inline int rd(){int x=0; bool f=0; char c=gc();while(!isdigit(c)){if(c=='-')f=1;c=gc();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=gc();}return f?-x:x;
}bool g[N];
int n,m,tot,hd[N];
int t[N],f[N],val[N],tmp[N];struct edge{int to,nxt;}e[N<<1];inline void add(int u,int v){e[++tot].to=v; e[tot].nxt=hd[u]; hd[u]=tot;
}inline bool cmp(int x,int y){return f[x]>f[y];}void dfs(int u,int fa){f[u]=val[u];for(R int i=hd[u],v;i;i=e[i].nxt) if((v=e[i].to)!=fa) dfs(v,u);tmp[0]=0;for(R int i=hd[u],v;i;i=e[i].nxt) if((v=e[i].to)!=fa) tmp[++tmp[0]]=v;sort(tmp+1,tmp+1+tmp[0],cmp);int ptr=1,lim=min(tmp[0],t[u]-1);while(ptr<=lim&&f[tmp[ptr]]>=0) f[u]+=f[tmp[ptr]],g[u]|=g[tmp[ptr]],++ptr;if((ptr<=tmp[0]&&ptr>1&&f[tmp[ptr]]==f[tmp[ptr-1]])||(f[tmp[ptr-1]]==0&&ptr>1)) g[u]=1;
}int main(){n=rd();for(R int i=2;i<=n;++i) val[i]=rd();for(R int i=2;i<=n;++i) t[i]=rd();for(R int i=1,u,v;i<n;++i){u=rd(); v=rd(); add(u,v); add(v,u);}val[1]=0; t[1]=inf; dfs(1,0);printf("%d\n",f[1]);puts(g[1]?"solution is not unique":"solution is unique");return 0;
}

转载于:https://www.cnblogs.com/SGCollin/p/9696439.html

[ JSOI 2015 ] Salesman相关推荐

  1. [JSOI 2015] 子集选取

    4475: [Jsoi2015]子集选取 Time Limit: 1 Sec  Memory Limit: 512 MB Submit: 363  Solved: 255 [Submit][Statu ...

  2. JSOI 2015 送礼物

    [BZOJ4476] [JSOI2015]送礼物 Description JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店很神奇,所有出售的礼物都按照特定的顺序都 ...

  3. GDOI#345. 送礼物「JSOI 2015」01分数规划+RMQ

    题目描述 JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物.萌萌的礼品店很神奇,所有出售的礼物都按照特定的顺序都排成一列,而且相邻的礼物之间有一种神秘的美感.于是,JYY决定从中 ...

  4. NOI 2015 滞后赛解题报告

    报同步赛的时候出了些意外.于是仅仅能做一做"滞后赛"了2333 DAY1 T1离线+离散化搞,对于相等的部分直接并查集,不等部分查看是否在同一并查集中就可以,code: #incl ...

  5. 湖南省2015c语言真题及答案,湖南省2015年普通高等学校招生考试英语真题及答案...

    2015年普通高等学校招生全国统一考试(湖南卷) 英 语 本试卷分为四个部分,共12页.时量120分钟.满分150分 PartⅠ Listening Comprehension (30 marks) ...

  6. 龙岩学院计算机二级报名时间,福建龙岩学院2015年12月计算机等级考试报名通知...

    福建龙岩学院2015年12月计算机等级考试报名通知 各学院: 根据上级有关文件通知,2015年12月福建省高校学生计算机应用水平等级考试开始报名,现将有关事项通知如下: 一.考试内容: 本次一.二考试 ...

  7. 浙江大学通信与计算机网络,新浙大2015年通信与计算机网络离线作业.doc

    新浙大2015年通信与计算机网络离线作业 浙江大学远程教育学院 <通讯与计算机网络>课程作业 姓名:学 号:年级:14年春学习中心:温州学习中心 从资源共享的角度来定义计算机网络,计算机网 ...

  8. 计算机一级考试模拟题函数,2015年计算机一级考试模拟题(四)

    2015年计算机一级考试模拟题(四) 请用Word 2003对考生文件夹下WORD.DOC文档中的文字进行编辑.排版和保存,具体要求如下: (1)将标题段("十年后的家电")文字设 ...

  9. CV算法复现(分类算法5/6):ResNet(2015年 微软亚洲研究院)

    致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 目录 致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 1 本次要 ...

最新文章

  1. 【转载】xmind的使用安装方法
  2. XGBoost调参技巧(二)Titanic实战Top9%
  3. 第一次,人类在人工神经网络中发现了“真”神经元
  4. OVS 添加端口流程(二十九)
  5. service nginx start启动nginx出现Failed to start nginx.service:unit not found
  6. Linux 源代码阅读知识点及要求
  7. 华为云用什么吸引 150 万开发者?
  8. 小甲鱼java视频_b站有哪些好的java视频?
  9. Java基础002 Java9开发环境搭建(Win10平台)
  10. keil4调试时出现Error Flash Download failed - “Cortex-M4”问题
  11. Aquatone -- 子域名探测
  12. 养生之道——》每天8杯水
  13. k-近邻算法1(kNN)使用kNN算法改进约会网站的配对效果
  14. WebEx如何录制电脑内的声音
  15. python利用danmu实时获取斗鱼等直播网站字幕
  16. mysql 重新初始化
  17. 第六课:ResNeXt学习
  18. 计算机组成原理实验——实验1 运算器实验
  19. ARM40-A5应用——fbset与液晶屏参数的适配
  20. FTP工具,3款FTP工具推荐

热门文章

  1. Mysql备份与还原及优化方法
  2. 性能测试中传——lr理论基础(四)
  3. android读取大图片并缓存
  4. Exchange 2013防止数据丢失DLP预览
  5. 求职者提问的问题面试官不会_如何通过三个简单的问题就不会陷入求职困境
  6. 创建新的apple id_Google是新的Apple吗?
  7. gzip格式分析与识别
  8. 四种JOIN简单实例
  9. UI设计培训之UI设计系统知识
  10. UI设计师面试如何操作才能获得高薪