上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 65 下一页
摘要: 显然能重排为回文串相当于出现次数为奇数的字母不超过一个。考虑莫队,问题在于如何统计添加/删除一位的贡献。将各字母出现次数奇偶性看做二进制数,做一个前缀和一个后缀和。在右端添加一位时,更新区间的前缀、后缀集合,将后缀集合中合法的统计入答案即可。另三种更新类似。复杂度O(26*n√n)。 但是这个毒瘤题 阅读全文
posted @ 2018-11-25 15:11 Gloid 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 本以为必有高论,结果是个思博题。随便找一条直径,最后答案肯定是这条直径上的连续一段,如果某分支长度等于直径上某端的长度这一端都要被剪掉。 阅读全文
posted @ 2018-11-25 00:31 Gloid 阅读(146) 评论(0) 推荐(0) 编辑
摘要: A:签到。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long 阅读全文
posted @ 2018-11-24 21:57 Gloid 阅读(259) 评论(0) 推荐(0) 编辑
摘要: A:签到。room里有一个用for写的,hack了一发1e8 1,结果用了大概600+ms跑过去了。惨绝人寰。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #inclu 阅读全文
posted @ 2018-11-24 21:40 Gloid 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 容易想到用dfs序转化为序列上的问题。考虑分块,对每块排序,修改时对于整块打上标记,边界暴力重构排序数组,询问时二分答案,这样k=sqrt(nlogn)时取最优复杂度nsqrt(nlogn)logn,离跑过去还差一点。二分答案这一部分看上去很难优化,考虑重构时不那么暴力,将要修改的和不要修改的部分分 阅读全文
posted @ 2018-11-24 19:02 Gloid 阅读(196) 评论(0) 推荐(0) 编辑
摘要: splay维护区间最大值、最小值、相邻两数差的绝对值的最小值即可。 阅读全文
posted @ 2018-11-24 00:37 Gloid 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 注意到A+B+C很小,容易想到设f[i][A][B][C]为第i次攻击后有A个血量为1、B个血量为2、C个血量为3的期望伤害,倒推暴力转移即可。 阅读全文
posted @ 2018-11-23 23:10 Gloid 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 点分树上的某个点和其某个子树在原树中的连接方式一般来说可以是由该点连向子树内任意一点,这样方案数即为所有子树大小之积。但有一种特殊情况是连接某点后导致编号最小的重心更换,只要去掉这种就行了,具体地可以直接暴力找,因为点分树只有log层,每个点最多被找log次。 阅读全文
posted @ 2018-11-23 22:06 Gloid 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 考虑点分治。对子树按照根部颜色排序,每次处理一种颜色的子树,对同色和不同色两种情况分别做一遍即可,单调队列优化。但是注意到这里每次使用单调队列的复杂度是O(之前的子树最大深度+该子树深度),一不小心就退化成O(n2)。于是我们按照同颜色最大深度为第一关键字、子树深度为第二关键字排序,每次处理完一种颜 阅读全文
posted @ 2018-11-23 21:17 Gloid 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 即对每个i最大化hj-hi+sqrt(|i-j|)。先把绝对值去掉,正反各做一次即可。注意到当x>y时,sqrt(x+1)-sqrt(x)<sqrt(y+1)-sqrt(y),所以若对于i选择j比选择k更优(j>k),对于i+1~n也会是这样,即满足决策单调性(虽然并不能算作dp)。 可以这样使用决 阅读全文
posted @ 2018-11-22 21:03 Gloid 阅读(199) 评论(0) 推荐(0) 编辑
上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 65 下一页