[ZJOI2007] 时态同步


link

一道可以说是弱智的构造题,这和DP有半毛钱关系吗,然而并没有。

很明显,假如你要给u到v的边(u为父亲)加上一个边权,相当于就默认了v子树内所有叶子到v的距离相同,因为所有比v浅的边的边权的改变都不会改变子树内的距离大小关系,毕竟同加同减。然后明白这一点,搜索加贪心即可。

我竟然只用了十分钟敲代码。感动至极。

#include
#define zczc
#define int long long
const int N=500010;
inline void read(int &wh){
    wh=0;int f=1;char w=getchar();
    while(w<'0'||w>'9'){if(w=='-')f=-1;w=getchar();}
    while(w<='9'&&w>='0'){wh=wh*10+w-'0';w=getchar();}
    wh*=f;return;
}
inline int max(int s1,int s2){
	return s1