摘要:
题目大意: 有n个点,由m条边连接,第i条边的边权是wi。这些点和边构成了一个森林。你必须要新建若干条条权值为W天的边,使得原图恰好变成一棵树,并且让任意两个点间最长距离最短。求该通行时间 思路: 首先找出每棵树的直径和中心及其对应半径。 加边的过程一定是在这些中心之间加边。 考虑这些中心的连接方式 阅读全文
摘要:
题目大意: 给你一个n*m的格子,让你用1*2的长方形不重叠地铺满,问总共有几种铺法。 思路: 轮廓线DP。 枚举当前右下角(i,j),那么有不放、往上放和往左放三种情况。 对于三种情况分别讨论和转移。 状压的状态不是当前行的状态,而是当前轮廓线的状态。 阅读全文
摘要:
题目大意: 给你一棵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 阅读全文
摘要:
题目大意: 给你一棵树,两人轮流染色。 先手染白色,后手染黑色。 当整个树染完时,与黑色相邻的白色点变成黑色。 两人都按照最优策略进行染色。 如果最后还有白色,那么是先手胜,否则是后手胜。 思路: 贪心。 题目问的实际上就是,如果两人都按照最优策略染色,存不存在一种情况,使得存在一个白色结点不与黑色 阅读全文
摘要:
题目大意: 给你一棵n个结点的带边权的树,求该树直径必经边的个数。 思路: 显然直径必经的所有边的肯定是一个直径上的连续一段。 (若超过一段,则出现环,就不是树了) 首先求出原树的任一直径。 预处理出该直径上从结点i出发,不经过直径上其它结点的最长链长度far[i]。 从直径的两端往里缩,如果当前缩 阅读全文
摘要:
题目大意: 给你一棵n个结点的带边权的树,让你找出一条长度不超过s的链,使得结点到链的最大距离最小,求这个距离的最小值。 思路: 不难发现链在直径上的情况一定是最优的。 首先找出这个直径,然后二分答案m。 对于每一个m,把直径往里缩,使得两边缩的长度<=m。 判断一下缩完以后的直径是不是<=s。 二 阅读全文
摘要:
题目大意: 给你一棵带点权的树,找出一个最长的树链满足链上点权的最大公因数不为1。 思路: 暴力DP。 对于每个点,记录一下以这个点为一个端点的所有链的最大公因数及长度。 然后暴力转移一下,时间复杂度O(n^2logn),不过中间有一些情况是可以舍掉的,做不满。 本来是想试试这样暴力能拿多少分的,没 阅读全文
摘要:
题目大意: 有n种物品,地上有k个格子,p次操作。 每次操作要求将某一个指定的物品移动到任意一个格子中,同时你可以选择是否将格子中的某一个物品收起来,并消耗1的代价。 如果下达指令时,这个物品刚好在格子上,那么就不会消耗代价。 问至少消耗多少代价? 思路: 贪心。 每次移动如果时,如果地板上已经放慢 阅读全文