test0523

test 0523

T1 树上三角形

得分情况

期望:70-100

实际:10

改后:

题意

给定一个大小为 \(n\) 的有点权树,每次询问一对点\((u,v)\),问是否能在 \(u\)\(v\) 的简单路径上取三个点权,以这三个权值为边长构成一个三角形。同时还需支持单点修改。

犯傻原因

莫名其妙的树链剖分中线段数写挂了,然后没考虑到限制上传数量的优化……

正解

考虑到直接暴力,先求出LCA,然后发现路径长度为 \(k\) ,我们知道,如果要满足

\[a_i>a_{i-1}+a_{i-2} \]

极端请情况为斐波那契,那么所有数字在int范围内,所以最多50个数。

若两点直接路径长度大于50,那么可以直接判断为可行。

否则直接暴力,最后复杂度\(O(q)\)

T2 树上游戏

得分情况

期望:100

实际:100

题意

Bob 发明了一种与树有关的游戏: 他从树中删除任意数量的边,计算删除后所有连通块大小的乘积, Bob 将得到这么多的分数。你的任务就是对于一颗给定的树,求出 Bob 能得到的 最大分数。

正解

考虑树形DP

\(f_{x,j}\) 为点 \(x\) 分为 \(j\) 个联通块时的答案,那么就有

\[f_{x,j}=\frac{f_{x,k}}{k} \times \frac{f_{y,j-k}}{j-k} \times j (y\in x's\ son) \]

然后宁高精就水过了,不过有个玄学优化,为了避免再写个高精除,可以设

\[g_{x,j}=\frac{f_{x,j}}{j} \]

那么就显然了

T3 树上路径

得分情况

期望:0

实际:0

题意

古时候帝国有 \(n\) 个城堡,编号从 \(1\)\(n\)。除了皇帝拥有的城堡之外,其他每 个城堡都从属于某个城堡。如果两个城堡有直接从属关系,则有一条双向路径连 接两个城堡,保证整个帝国的所有城堡互相可达。 每一年,野蛮人有可能对某一个城堡 \(c\) 发起攻击,所到之处,寸草不生。此 外,野蛮人不会对同一个城堡发起多次攻击。 如果某一年野蛮人没有攻击,则骑士就会出来巡逻,巡逻路线是从城堡 \(a\) 到 城堡 \(b\) 且不会多次经过同一个城堡。在巡逻时,骑士需要休息,但是他不会选择 y 年后被攻击的城堡休息。具体地说,城堡 \(a\) 到城堡 \(b\)(不含 \(a\)\(b\))的路线 中,第 k 个在 y+1 年后没被攻击的城堡会被骑士选做休息地点。 你的任务就是计算每次骑士巡逻的休息地点。

犯傻原因

暴力最后没写出来(不过据说这个暴力在这个水数据下可以A?)

正解

考试总结

T1没有仔细想就开始写了,没能想到更简便的方法,写树链剖分浪费了许多时间还写错了……

T2还好过了但调试也花了点时间

T3最后暴力没写出来……

题目还是多想想再动手……不然写完了才发现错了是真的惨。然后先预留好时间写难题的暴力,说不定出奇迹……

猜你喜欢

转载自www.cnblogs.com/ztz-cpp/p/test0523.html