摘要:
Tree P4178 Tree 点分治板子。 点分治就是直接找树的重心进行暴力计算,每次树的深度不会超过子树深度的$\frac{1}{2}$,计算完就消除影响,找下一个重心。 所以伪代码: void solve(int u) { calc(u); used[u]=true; for(int i=he 阅读全文
摘要:
汉诺塔(BZOJ) P4285 [SHOI2008]汉诺塔 居然是省选题,还是DP!(我的DP菜得要死,碰见就丢分) 冥思苦想了1h+ \(\to\) ?! 就是普通的hanoi NOI or HNOI? DP加上一个乱搞的数组,然后我还写反了一次,就gg了。 大概思路: $dp_{i,j}$表示从 阅读全文
摘要:
三角形tri 找规律神题…… 发现如果以4结尾,把4改成1、2、3输出就行了。 如果不以4结尾: 把结尾改成4输出即可,因为一定与三角形的中心相邻。 规律1:如果把串的末尾删去,那么会回到上一层。 如果这个串里只有1种数字,那么它一定在某个角上,只和自己这层的4相邻。 如果这个串里有2种数字,那么他 阅读全文
摘要:
SOLDIERS 有一个性质:在一个长为n的序列a中找一个数 \(a_k\) 使得 \(\sum\limits_{i=1}^n abs(a_i-a_k)\) 最小,则 \(a_k\) 是a的中位数。 于是在这题里,对于纵坐标直接找中位数,算一遍上面的式子即可。 横坐标稍加处理:先从小到大排序,此时数 阅读全文
摘要:
CF97B Superset 这题主要是构造难想。看看数据范围发现连$O(n^2)$都被卡了,然后 考试的名称提醒我 想到了分治。 坐标按横坐标为关键字排序后找中间的点进行分治不是点分治qwq。 考虑让中间点作一条平行于y轴的直线,让每个点i(mid除外)向这条直线引垂线交于一个点 \(S_i\), 阅读全文
摘要:
P1429 平面最近点对(加强版) 主要思路: 分治,将点按横坐标为第1关键字升序排列,纵坐标为第2关键字升序排列,进入左半边和右半边进行分治。 设d为左右半边的最小点对值。然后以mid这个点为中心,扩展宽为2d,长为2d的正方形。除了这个正方形外的点都不可能使答案更小。而且这个正方形里至多8个点( 阅读全文