这是本文档旧的修订版!
本周暂无
主要是两场CF,一场涨了一场跌了,基本等于没打(苍天啊)
无
因为没有cf div.1,所以一直在慢慢补cf的和牛客的题。
无
要多加强思维训练
感觉还行,补题应该再积极一点。
Codeforces 660(Div.2)C . Uncle Bogdan and Country Happiness
发现自己CF面对不熟悉的问题,思维总是很慢,写下这道题主要是给自己引以为戒的。这周开始尽量多vp,提高自己的思维能力。
思维,树的遍历
给你$n$个城市和$n-1$条道路,城市$i$生活了$p_i$个人,他们都工作在城市$1$,工作结束要返回各自城市,每个人回家时有的有好心情,有的有坏心情,经过一条边时,某些好心情的人会变成坏心情。定义一个城市的开心指数$h_i$为经过(或者到达)的好心情的人的数量减去坏心情的人的数量。出所有$h_i,p_i$,询问是否存在这样的可能情况。$1\le t\le 10000,1\le n\le 10^5,1\le m=\sum p_i\le 10^9,-10^9\le h^i\le 10^9, \sum n\le 2*10^5$。
用一个子树中$p_i$的和,以及$h_i$,可以求出经过$i$的开心的人数和不开心的人数,当然这个人数要在$[0,p_i]$中。这是第一个条件。由于开心的人数递减,所以所有儿子的开心人数之和不会多于父亲。这是第二个条件。
当时赛场上莫名奇妙想了一些多余的条件,比如儿子的$h$之和不超过子树中$p$之和$-p_i$,这个显然是很多余的,因为第一个条件满足这个肯定满足。第二个条件当时一直在想不开心人数,居然没有稍微反着一点。这种题目写了一个小时,我也是很自闭。