摘要: 坐标轴转化+cdq分治 我们发现那个绝对值不太好搞,于是我们把曼哈顿距离转为切比雪夫距离,x'=x-y,y'=x+y,这样两点之间距离就是max(|x1'-x2'|,|y1'-y2'|),这个距离要小于等于k,那么就是求转化后坐标系中在以x',y'为中心,边长为2k的正方形中的点数,每次修改就相当于 阅读全文
posted @ 2017-08-26 14:06 19992147 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 背包+倍增 直接背包跑不过去,那么我们把容量分成二进制,然后原来需要枚举c次就只用枚举log(c)次了,这样还是能组合出任意小于等于c的组合方案 #include<bits/stdc++.h> using namespace std; const int N = 20010; int n, s; i 阅读全文
posted @ 2017-08-26 14:02 19992147 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 极角排序 先开始想了很多分割方法,发现都不对,最后觉得只能极角搞搞,就看了答案 我们发现,一个点的原点构成的直线把平面分成了两半,那么只由一边点和这个点构成的三角形肯定不包含原点,那么我们按极角排序,然后计算右边有多少点C(x,2)就行了。因为一个三角形有三个点,枚举到中间那个点的时候这个三角形不会 阅读全文
posted @ 2017-08-26 13:59 19992147 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 树形dp dp[x][0]表示x点父亲没选,dp[x][1]表示x点父亲选了,然后dp[x][0]=max(sigma(dp[c[x]][0]),sigma(dp[c[x]][1])) dp[x][1]=sigma(dp[c[x][0]]) 答案就是dp[1][0] 根没有父亲 #include<b 阅读全文
posted @ 2017-08-26 13:34 19992147 阅读(146) 评论(0) 推荐(0) 编辑