摘要:
贪心。先杀能回血的怪。。 杀能回血的怪的时候,显然是按着血量要求从低往高杀; 杀损血的怪的时候,就按回血量从大到小啥。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 #defin 阅读全文
摘要:
这竟然是最小生成树。。哭瞎。 记前缀和的奇偶性为pre[],要确定一个点的奇偶性,肯定要知道pre[i]和pre[i-1],或者pre[i+1]和pre[i](不一定是直接询问得出的,总之肯定要知道pre[i] 如果将查询区间[l,r]总和的奇偶性视为一条边(l-1,r)(因为是pre[r]-pre 阅读全文
摘要:
离散化+分块大法。 在线询问区间众数。。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath> 6 #define ll long long 7 #def 阅读全文
摘要:
链剖一波,我们只关心末端"001"和"011"这两种输入被改变后会改变输出的情况。。不然就是单点修改。 线段树需要维护区间右端开始连续的"001""011"长度。。修改的时候就把整段连续的都改了,最后加个单点修改。 1 #include<cstdio> 2 #include<iostream> 3 阅读全文
摘要:
本题同bzoj1098 用个并查集,把连续的被访问过的点并起来。。这样就不会尝试已经走过的点了。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace s 阅读全文
摘要:
链剖。线段树要记录区间内负数的个数,负数的最大值.. 如果增加后能使负数变正的话就往下暴力更新。。。 时间复杂度O(nlog^2n) 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cstdlib> 5 # 阅读全文
摘要:
这题挺神的...膜了半天claris的题解还有官方题解。。 一维随便搞, 二维的话就旋转坐标系,把原来的点(x,y)变成(x+y,x-y),把曼哈顿距离变成切比雪夫距离。然后排序后扫描线,树状数组维护。 三维的话.....官方题解是旋转坐标系后直接三维树状数组?(吓哭 Claris的题解说只要旋转后 阅读全文
摘要:
最小圆覆盖。。三个for是O(n)的QAQ。。因为随机化后新的点不在当前圆内的几率不大。。 学习了下求中垂线的姿势... 1 #include<cstdio> 2 #include<cmath> 3 #include<iostream> 4 #include<cstdlib> 5 #include< 阅读全文
摘要:
静态信息的点分治。 老套路,对各个重心用数据结构维护所管辖的点到它的距离。。再去重一波 查询的时候就直接二分了。。如果数据结构用动态开点的线段树的话就可以直接在线段树上找了..不过我还是写了treap 时间复杂度O(nlog^3n) 1 #include<cstdio> 2 #include<ios 阅读全文
摘要:
两对数中间相交应该是可以随便取得。。如果一对数被包含的话,就应该先选这对数。 按顺序读入,凑成一对数就扔掉,树状数组更新对其他位置的影响。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cstdlib> 阅读全文