摘要:
题目大意: 给你一棵n个结点的带点权的树,指定访问结点的顺序。 每次访问走最短路径,并将经过结点的点权+1。 问最后各个结点的点权。 思路: 树链剖分。 每次访问求一下LCA即可,同时维护一下线段树。 因为最后只需要统计一次,中间没有询问,因此可以最后在处理一下lazy标记。 阅读全文
摘要:
题目大意: 平面直角坐标系中散落着n个点,一个椭圆的长半轴在对于x轴逆时针旋转α度的角度上,且长半轴是短半轴的k倍。 问短半轴至少要多长才能覆盖所有的点? 思路: 首先把坐标顺时针旋转α度,然后把所有点的横坐标缩小k倍,就变成了最小圆覆盖问题。 阅读全文
摘要:
题目大意: 给你一个长度为n的数列,让你分成m段,使得每一段数字和的方差最小。 输出最小方差*m*m。 思路: 不难想到一个DP。 设f[i][k]表示前i个数分成k段,则 f[i][k]=std::min(f[i][k],m*sqr(sum[i])-2*sum[n]*sum[i]+f[j][k-1 阅读全文
摘要:
题目大意: 给你一棵树,两人轮流染色。 先手染白色,后手染黑色。 当整个树染完时,与黑色相邻的白色点变成黑色。 两人都按照最优策略进行染色。 如果最后还有白色,那么是先手胜,否则是后手胜。 思路: 贪心。 题目问的实际上就是,如果两人都按照最优策略染色,存不存在一种情况,使得存在一个白色结点不与黑色 阅读全文