当前位置: 首页 > 编程日记 > 正文

[ JSOI 2015 ] Salesman

\(\\\)

\(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

相关文章:

linux安装python2和3版本_Windows下安装Python2和Python3双版本

现在大家常用的桌面操作系统有&#xff1a;Windows、Mac OS、Ubuntu&#xff0c;其中Mac OS 和 ubuntu上都会自带Python。这里我们只介绍下Windows(我用的Win10)环境下的python2.x 和 python3.x 的安装&#xff0c;以及python2.x 与 python3.x 共存时的配置问题。本节内容pytho…

JS+CSS点击弹出登陆框代码

<head><meta http-equiv"Content-Type" content"text/html; charsetgb2312"><title>弹出登录框的实现代码</title></head><body><style type"text/css">body {margin: 0px;padding:0}#div1 {display:…

awk4.0 — awk格式化

awk格式化使用printf函数&#xff0c;类似于C语言中的printf函数 比如 awk {printf "%s\n", $1} test1 上面的方式是awk每次处理一行&#xff0c;然后进行替换的&#xff0c;如果我们想要传入多个参数&#xff0c;此时就需要多个格式化

在LinearLayout中嵌套RelativeLayout来设置Button的位置(xml文件)

想将Button和ListView分别放在屏幕的一左一右。 单纯使用android:gravity和android:layout_gravity不成功。 于是涉及到RelativeLayout 关键为&#xff1a;android:layout_alignParentRight"true" android:layout_alignParentLeft"true" <?xml versio…

Scrapy爬虫-必备插件

必备插件&#xff1a; lxml, an efficient XML and HTML parser parsel, an HTML/XML data extraction library written on top of lxml w3lib, a multi-purpose helper for dealing with URLs and web page encodings twisted, an asynchronous networking framework https://…

python类和对象课件_简单解释Python的类和对象

前言&#xff1a;对象是模拟真实世界&#xff0c;把数据和程序进行封装 。对象 属性 方法我们需要用类来创造一个对象&#xff0c;就像我们要用图纸来造房子一样。在Python中函数名是以小写字母开头 &#xff0c;类名是以大写字母开头。0x00:面向对象(Object Oriented)我们一般…

awk5.0 — awk模式之一

再次重申awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2… awk模式&#xff0c;在之前的文章中简单使用了BEGIN和END。这里的模式&#xff0c;其实我们可以理解成是条件&#xff0c;awk是一行行处理数据的&#xff0c;如果满足某个条件awk就处理某一行数据&#x…

CF331A1,331A2

链接&#xff1a;http://codeforces.com/problemset/problem/331/A1 题意&#xff1a;不翻译了。 思路&#xff1a;A1题数据范围小&#xff0c;暴力是可行的&#xff0c;我果断暴力了。不过&#xff0c;话说&#xff0c;除了暴力我还会什么。。。闲话少说。A2的话&#xff0c;采…

SCCM 2012系列9 补丁分发上

HI&#xff0c;今天我会给大家介绍SCCM 2012的补丁分发&#xff0c;分为上中下&#xff0c;当然希望大家多多指教哦 1 服务器配置 1.1 环境要求 如果SCCM和WSUS在同一台服务器上那没什么&#xff0c;但如果WSUS和SCCM分别在不同的服务器上&#xff0c;那么WSUS服务器需要把S…

python基础-垃圾回收机制

垃圾回收 Python中的垃圾回收是以引用计数为主&#xff0c;分代收集为辅。引用计数的缺陷是循环引用的问题。 引用计数 原理&#xff1a;当一个对象的引用被创建或者复制时&#xff0c;对象的引用计数加1&#xff1b;当一个对象的引用被销毁时&#xff0c;对象的引用计数减1&am…

awk 6.0 — awk模式之二

awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2… 之前介绍了三种模式&#xff1a;空模式&#xff0c;关系运算模式&#xff0c;BEGIN/END模式 正则模式 模式可以理解成条件&#xff0c;正则模式就是满足正则表达式条件的&#xff0c;就执行相应的动作&#xf…

根据搜索来路 弹出相应广告

根据搜索来路 弹出相应广告 以下是一段php判断搜索引擎的代码 <?PHP $referer $_SERVER[HTTP_REFERER]; if(!$referer ){ if(ereg(http,$referer)){ $referer eXPlode(.,$referer); if(is_array($referer)){ $referer $referer[1]; if($referer google OR $referer b…

redis mysql查询数据类型_linux 常见的标识与Redis数据库详解

xxxxxx:~$ :第一个 xxx 只的是 用户名第二个 xxx 代表的是 HOST主机~ : 当前用户的根&#xff0c; 根的位置在 /home/用户名$ : 代表当前用户是一个普通用户# : 代表当前用户是超级用户查看当前命令所在的位置pwd文件夹/文件的常见命令mkdirlsrmdirrm创建文件夹mkdirmkdir test…

/etc/hosts/中HOSTNAME错误导致lsnrctl启动错误

系统环境&#xff1a;REDHAT LINUX5.4 ORACLE10.2.0.4&#xff0c;是通过虚拟机复制另外一台数据库系统环境后安装ORACLE获得。故障现象&#xff1a;ORACLE安装正常&#xff0c;本地服务正常&#xff0c;本地数据通过IMP可以正常导入&#xff0c;但是LSNRCTL能够启动&#xff…

16_python_面向对象

一、面向对象和面向过程的区别1、面向对象&#xff1a;一切以对象为中心。有相同属性和动作的结合体叫做对优点&#xff1a;易维护、易复用、易扩展&#xff0c;由于面向对象有封装、继承、多态性的特性&#xff0c;可以设计出低耦合的系统&#xff0c;使系统 更加灵活、更加易…

怎么用canvas画秒针_用canvas画一个钟表

body{background: #000000;}#c1{background: #FFFFFF;}span{color: #FFFFFF;}var oCdocument.getElementById("c1");var oGcoC.getContext(2d);setInterval(function(){ //循环计时器每一秒调用一次&#xff0c;相当于每隔一秒画一次表盘oGc.clearRect(0,0,oC.offset…

每日英语:China's Labor Market Tightens

Job cuts in China appear to be on the rise, dimming prospects for a labor market that has been a resilient bright spot amid a slowdown in the worlds second-largest economy. dimming&#xff1a;调光&#xff1b;变暗    resilient&#xff1a; 弹回的&#xf…

大数据-spark-hbase-hive等学习视频资料

不错的大数据spark学习资料&#xff0c;连接过期在评论区评论&#xff0c;再给你分享 https://pan.baidu.com/s/1ts6RNuFpsnc39tL3jetTkg 转载于:https://www.cnblogs.com/xjh713/p/9704251.html

redis学习 -- 简单动态字符串

Redis没有使用C语言字符串的形式&#xff0c;通过’\0’作为结尾&#xff0c;而是使用了简单动态字符串(simple dynamic string)。 当Redis使用的字符串不需要修改字符串的内容的时候&#xff0c;可以使用C语言提供的字符串&#xff0c;当需要修改内容的时候就使用的是简单动态…

【stanford C++】容器III——Vector类

主要介绍如下5个容器类——Vector&#xff0c; Stack&#xff0c;Queue&#xff0c;Map和Set&#xff0c;各个都表示一重要的抽象数据类型。另外&#xff0c;各个类都是一些简单类型的值的集合&#xff0c;所以称它们为容器类。 暂且我们先不需要知道它们是如何实现的&#xff…

linux编译安装mysql 5.1_linux编译安装mysql5.1.x

安装mysql&#xff0c;安装前准备如果mysql用户不存在&#xff0c;那么添加mysql用户groupadd mysqluseradd -g mysql mysqlmysql编译安装make时间特别长wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.70.tar.gztar -zxvf mysql-5.1.70.tar.gzcd mysql-5.1.70…

Windows PowerShell 批量迁移Windows用户信息

这里说一下我在服务器上本地用户帐号、组的迁移 这里用到的迁移工具是 Windows PowerShell 迁移支持虚拟机和实体机器的迁移&#xff0c;虚拟机和虚拟机的迁移 但是不支持不同语种之间的迁移&#xff0c;比如英语向中文迁移 这里我实验的是虚拟机和虚拟机的迁移 系统是Windows…

css中position的几个值

1. staitic:该值符合文档的初始排版&#xff0c;其中设置的与位置有关的值不起作用。2.relative 该值的偏移量&#xff0c;是在文档初始排版的基础上进行排版&#xff0c;并且覆盖顺序是最新输出的在最上面3.absolute该值元素的定位是以网页文档左上角位基准&#xff0c;并且不…

一个较为详细的ETL系统实现方案

转至&#xff1a;http://www.cognoschina.net/club/viewthread.php?tid5627 1 ETL流程及调度设计&#xff08;ETL Schedule&#xff09;(PSP)1. ETL调度的目标快速见效系统要抽取39家分行四个系统的数据进行加工处理&#xff0c;数据从下传文件到ODS库&#xff0c;ODS库到LDM&…

python与anaconda区别_anaconda和python的区别是什么?

anaconda和python的区别是什么&#xff1f;Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。使用python需要下载安装执行python代码的环境。官方的Python包含了核心的模块和库&#xff0c;为了完成其他任务&#xff0c;需要安装其他的模块和库。Anaconda 是Py…

opencv 1 图像载入、显示和输出

三个函数 imread() namedWindow() inshow()1. imread 函数原型&#xff1a; Mat imread(const string& filename, int flags 1 );参数解析&#xff1a; const string& finename 将要载入的图片路径名。 Windows操作系统下面支持如下类型的图片&#xff1a; Window…

英文申请书范例

Dear Sir or Madam, I am applying for the position of Executive Assistant as advertised in the Recruitment Daily last evening. 我来应聘昨天晚上在每日招聘上发布的行政助理一职。 I have over five years of experience within this role during which time I have de…

c++ ofstream使用方法

ofstream是从内存到硬盘&#xff0c;ifstream是从硬盘到内存&#xff0c;流缓冲即是内存空间。 插入器<< : 向流输出数据。 cout << "test!" << endl; 将字符串输出到标准输出流。 析取器>> : 从流中输入数据 cin >> x; 从标准输入流…

JAVA 继承内存模型_Java内存模型

JVM的组成类加载器(classloader)执行引擎(execution engine)运行时数据区域(runtime data area)对于Java程序员来说&#xff0c;在虚拟机自动内存管理机制下&#xff0c;不再需要像C/C程序开发程序员这样为内一个new 操作去写对应的delete/free操作&#xff0c;不容易出现内存泄…

Error: The INF file contains Unicode characters that could not be converted correctly

昨天第一次为自己的windows mobile程序制作CAB安装包&#xff0c;但是在生成过程中&#xff0c;却出现了这样一个问题&#xff1a;编译完成 -- 0 个错误&#xff0c;0 个警告time -> G:\WindowsMobile\time\time\bin\Debug\time.exe------ 正在启动项目“SmartDeviceCab1”的…