因为不想打细节题所以滚来写总结了
这套题面过度玩梗。。。
T1 Hello my friend
题意:树上每个点有黑白两种颜色,如果是黑色则每次走到都有贡献,白色则只有一次贡献,问从点 (1) 开始的期望。
(定位是签到题,然而爆零。。。)部分分的提示非常明显
考虑将黑白两种颜色分开做,黑色是经典题目(指不知道叫什么),每个点 (f_u) 的表达式都可以写作 (f_u = k_u f_{fa} + b_u) 的形式,用这个形式一直转移到 (1) 即可, (b_1) 即是答案,若是白色点则不计算贡献,将表达式中的 (+1) 去掉。
白色的话就是求每个点被到达的概率,维护 (f_x) 、 (g_x) 分别表示 (x) 走到 (fa_x) 和 (fa_x) 走到 (x) 的概率, (DP_x) 表示到达 (x) 点的概率,像换根DP一样求即可。
注意有两个数据是不符合题目所给 (d_1>1) 的条件的( (d_x) 为点 (x) 的度数)。
T2 Try to find out the wrong in the test
题意:将一个序列分成一些连续的区间,每个点有一个 (L_i) 、 (R_i) 表示该点所在区间的大小上、下限,要求分出的区间最多,并求出方案数。
首先 (n^2) DP是显然的嘛,然后考虑优化。
这个整个是不具有单调性的。。。不要卡死在一个点上了。。。
但是满足 (R) 条件的区间是具有单调性的,因此可以对于每个点维护出 (Left_i) 表示能转移到该点的最左点,可以用单调队列实现。
然后考虑分治,每次将 (L) 最大的点作为分治中心,设该点为 (L_k=c),用左边更新右边。
此时我们就知道了每个区间的最小长度,
根据 (Left_i) 给 (i) 分成 (Left_i le l) 、 (l < Left_i < k) 和 (k le Left_i) 三段,
最后一段没有贡献,中间的贡献区间不确定,暴力转移,
前面的一段我们发现有 (i le k+1-c) 和 (i > k+1-c) 之分,前者相邻两个 (i) 之间的贡献区间只差 (i-c+1) 这一个,对于第一个用线段树求解后可直接更新;后者每一个的贡献区间都是一样的,将答案标记打到整个满足条件的区间上即可。
T3 【JSOI2015】投影面积(light)
题意:平面上有一个屏幕和一个光源,还有若干个反射或阻挡的障碍物,求屏幕被照亮区域的占比。
将光线分离成几十万条后暴力判断是否可以到达屏幕。
暴力细节题。。。恶心坏了