上一页 1 2 3 4 5 6 7 ··· 19 下一页
摘要: 主席树 + 二分答案 对于这种区间内的值域问题一般用主席树进行求解。 因为数据范围只有1e6,所以不用离散化,直接建树即可。 题目要求找到区间内离p第k近的数,可以想到,这个问题具有单调性(某个区间长度有大于k个值,那么比这个区间长度更长的比如也有大于k个值) 于是我们可以二分答案这个距离,枚举离p 阅读全文
posted @ 2019-08-01 09:02 清楚少女ひなこ 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 线段树 每次枚举右端点,用线段树的区间加来表示合法区间的覆盖,最后找到最大值为c的最小位置就是左端点 这里为了方便,把每个数第一次出现的位置都当成0,最后一次当成n+1。 一开始需要把0~第一次出现的位置 1的区间覆盖掉,当我们枚举到i的时候,由于i这个位置的数必须选,所以他出现的次数只能是大于等于 阅读全文
posted @ 2019-07-31 09:47 清楚少女ひなこ 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 二分答案 + 平衡树 + dp 很显然的一道二分答案题,我们每次二分每组最大和,用dp来检测。 dp\[i]表示前i本书能够分成的最多组数。 可以得到状态转移方程 dp\[i] = max(dp\[j]) + 1 (sum\[i] sum\[j] = sum\[i] mid 我们可以在按sum值维护 阅读全文
posted @ 2019-07-30 19:43 清楚少女ひなこ 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 思维 如果只有两个二进制位是1且不是3的倍数显然没有答案,我们只考虑两个以上的情况。 若a mod 3=1: 如果a中的二进制位有至少两个mod 3=1的,设它们为p和q,我们取{a p,a q}即可。 如果a中的二进制位有恰好一个mod 3=1的,那么设mod 3=1的这个位为p,mod 3=2 阅读全文
posted @ 2019-07-28 20:49 清楚少女ひなこ 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 单调栈 + 线段树 先单调栈预处理a中每一个数覆盖的范围,然后用线段树维护b的前缀和,在选i的范围内查询区间值。 讨论一下a的正负性 阅读全文
posted @ 2019-07-28 18:50 清楚少女ひなこ 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 思维 不难想到300的倍数就是既是3的倍数也是100的倍数。 3的倍数的特征是各位之和为3的倍数,100的倍数后两位一定是0。 我们可以预处理出前缀和模3的结果,然后在每一次末尾连续两个0的时候统计答案,也就是加上之前模数相同的前缀的数量 include define INF 0x3f3f3f3f 阅读全文
posted @ 2019-07-27 18:45 清楚少女ひなこ 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 模拟 + 双向链表 + map 根据提议模拟一个双向链表,用map映射下节点的地址就好啦。 有点卡时间,cin取消同步还是一直T,改成scanf才过。 阅读全文
posted @ 2019-07-26 12:00 清楚少女ひなこ 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 单调队列 把每列的最大值最小值预处理出来,压成一维用两个单调队列维护最大值最小值,和最左下表。 当队首元素相减不满足约束时出队,这个时候维护最小左下表,让它移动到两个队列中队首靠左的下表那继续更新答案。 阅读全文
posted @ 2019-07-26 09:02 清楚少女ひなこ 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 凸包 水一下。。构造凸包求周长。。 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) define FAST_IO ios::sync_with_stdio(false) using namespace st 阅读全文
posted @ 2019-07-25 10:23 清楚少女ひなこ 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 主席树 用主席数来维护区间第k大,然后不能构成三角形的最小条件就是斐波那契数列。 题目给的范围只有1e9,最坏情况下也只有44项斐波那契数列,也就是说我们从第1大,第2大,第3大依次往下判断,也最多遍历44次,肯定可以在规定时间内求解。 阅读全文
posted @ 2019-07-25 00:12 清楚少女ひなこ 阅读(207) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 19 下一页