
位运算、倍增、RMQ
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
#贪心,堆,RMQ#洛谷 2048 JZOJ 2226 超级钢琴
题目 分析 考虑一个maxx(x,l,r)maxx(x,l,r)maxx(x,l,r)表示以左端点为xxx,右端点在[l∼r][l\sim r][l∼r]的范围内的最大值,那么维护的最大值也就是s[mx]−s[l−1]s[mx]-s[l-1]s[mx]−s[l−1],而只有mxmxmx是变动的,所以可以用RMQ去求解,把这个三元组扔进一个大根堆里面,跑kkk次,但是处理完一个三元组后需要把它拆成...原创 2019-11-02 10:12:36 · 301 阅读 · 0 评论 -
2019.04.13【NOIP提高组】模拟 A 组
解题报告前言JZOJ 3169 生产汽车题目分析代码JZOJ 3170 挑选玩具题目分析代码JZOJ 3171 洛谷 4594 重心[题目](https://www.luogu.org/problemnew/show/P4594)[分析+代码](https://www.luogu.org/paste/cwuaw5vf) 前言 水分警告 JZOJ 3169 生产汽车 题目 nnn个工人,mmm辆汽...原创 2019-04-17 17:36:33 · 369 阅读 · 0 评论 -
2019.03.16【NOIP提高组】模拟 B 组
解题报告JZOJ 1284 病毒题目大意分析代码JZOJ 1285 奶酪厂(题目过水)JZOJ 1286 太空电梯题目分析代码JZOJ 1287 躲雨题目分析代码 JZOJ 1284 病毒 题目大意 选择一些二进制数,使它们的或值二进制1的个数不超过kkk并使选择的个数最大 分析 可以反其道而行,用sum[t]sum[t]sum[t]表示二进制为ttt时,选择某头牛的二进制与ttt没有交集的个数...原创 2019-04-26 21:53:05 · 160 阅读 · 0 评论 -
#链表,倍增优化dp#洛谷 1081 JZOJ 3101 开车旅行
题目链接 分析 什么辣鸡水题,我这种大佬做这种水题? 代码 #include <cstdio> #include <cctype> #include <algorithm> #define rr register #define abs(x) ((x)<0?-(x):(x)) using namespace std; struct liSt{int v...原创 2019-04-27 15:03:31 · 201 阅读 · 0 评论 -
#倍增,floyd#洛谷 1613 跑路
题目 分析 只要xxx到yyy,yyy到zzz的权都是2k2^k2k,那么xxx到zzz的权就是2k+12^{k+1}2k+1,通过这样把可直接连通的点连边,边权为1,跑floyd即可 代码 #include <cstdio> #include <cctype> #include <cstring> #define rr register using nam...原创 2019-05-04 13:35:44 · 167 阅读 · 0 评论 -
#倍增优化dp#CH 5702 Count The Repetitions
题目链接 分析 可以发现题目就是求最小的mmm,使conn(s2,n2∗m)=conn(s1,n1)conn(s2,n2*m)=conn(s1,n1)conn(s2,n2∗m)=conn(s1,n1) 它肯定会有一个上界也就是n1∗len1/n2n1*len1/n2n1∗len1/n2,然而这个上界还是很大,考虑用倍增拼凑 设dp[i][j]dp[i][j]dp[i][j]表示从s1[j]s1[...原创 2019-05-24 20:55:11 · 262 阅读 · 0 评论 -
#倍增,归并排序#CH 0601 Genius ACM
题目 给定一个整数 MMM,对于任意一个整数集合 SSS,定义“校验值”如下: 从集合 SSS 中取出 MMM 对数(即 2∗M2∗M2∗M 个数,不能重复使用集合中的数,如果 SSS 中的整 数不够 MMM 对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值 就称为集合 SSS 的“校验值”。 现在给定一个长度为 NNN 的数列 AAA 以及一个整数 TTT。我们要把 AAA ...原创 2019-05-24 22:03:23 · 160 阅读 · 0 评论 -
2019.05.04 【NOIP提高组】模拟 A 组
解题报告JZOJ 4637 大鱼海棠题目分析JZOJ 4638 第三条跑道题目分析代码JZOJ 4639 Angel Beats!题目分析代码后续 JZOJ 4637 大鱼海棠 题目 有一棵根节点是1的树,选择一个点,使这个点到根节点的路径不能选择,所有点不能选择为输,问先手是否必胜 分析 如果后手能选到后手必胜的点,先手第一步就能选到,所以除非只有一个点,否则先手必胜 JZOJ 4638 第...原创 2019-07-05 07:47:07 · 156 阅读 · 0 评论 -
2019.07.06【NOIP提高组】模拟 A 组
解题报告JZOJ 2679 跨时代题目分析代码洛谷 2579 JZOJ 2288 沼泽鳄鱼分析代码JZOJ 1214 洛谷 4130 项链工厂分析代码后续 JZOJ 2679 跨时代 题目 用nnn根栏杆的其中若干根,使其围成的矩形面积最大 分析 这道题首先用深搜求出二进制状态能围成的边长,然后用背包,把冗余的栏杆放入背包中,但不改变边长,只是为了装完所有栏杆,最后把nnn根栏杆分成两部分求出最...原创 2019-07-07 15:30:42 · 305 阅读 · 0 评论 -
2019.08.07【NOIP提高组】模拟 A 组
解题报告JZOJ 6275 小L的数列题目分析代码JZOJ 6274 梦境题目分析代码JZOJ 6276 树 JZOJ 100019 A题目分析代码 JZOJ 6275 小L的数列 题目 分析 用矩阵乘法递推f1∼fkf1\sim fkf1∼fk的系数,就AC了,时间复杂度O(k3logn)O(k^3log n)O(k3logn) 代码 #include <cstdio> #in...原创 2019-08-07 22:02:47 · 378 阅读 · 0 评论 -
2019.08.15【NOIP提高组】模拟 A 组
解题报告JZOJ 6296 投票题目分析代码JZOJ 6294 动态数点题目分析代码JZOJ 6303 演员题目分析代码 JZOJ 6296 投票 题目 分析 根据贪心从小到大排序后选择两边的同学必然是最优的,所以可以写一个dp方程,枚举左边同学求最大值 代码 #include <cstdio> #include <algorithm> #define rr regi...原创 2019-08-19 10:37:50 · 384 阅读 · 0 评论 -
#快速幂,概率#洛谷 5104 红包发红包
题目 假如现在有www元,那么你抢红包能抢到的钱就是[0∼w][0\sim w][0∼w]等概率均匀随机出的一个数xxx。 现在红包发了一个www元的红包,有nnn个人来抢。那么请问第kkk个人期望抢到多少钱? 分析 首先等概率的话那么数学期望应该就是w2\frac{w}{2}2w,然后kkk次就是w2k\frac{w}{2^k}2kw,所以说快速幂求解 代码 #include <c...原创 2019-04-03 17:27:13 · 484 阅读 · 0 评论 -
2019.03.09【NOIP提高组】模拟 B组
解题报告JZOJ 4742 单峰题目分析代码JZOJ 4743 积木题目分析代码JZOJ 4745 看电影题目分析代码 JZOJ 4742 单峰 题目 问1∼n1\sim n1∼n的排列中有多少个单峰排列 分析 对于n−1n-1n−1,nnn的位置只能在n−1n-1n−1的左右,所以也就是2n−12^{n-1}2n−1 代码 #include <cstdio> #define rr...原创 2019-03-27 21:24:46 · 210 阅读 · 0 评论 -
2019.03.08晚【NOIP提高组】模拟 B 组
解题报告前言JZOJ 3054 祖孙询问题目分析代码JZOJ 3055 比赛题目分析代码JZOJ 3056 数字题目分析代码 前言 感觉不难呀 JZOJ 3054 祖孙询问 题目 求两个树上节点的祖孙关系 分析 树上倍增LCA模板,不想多说 代码 #include <cstdio> #include <cctype> #include <cstring> ...原创 2019-03-27 21:03:51 · 391 阅读 · 0 评论 -
JZOJ 1371 假期#RMQ#
其实求的就是最大连续子段和,长度在p到q之间。 然后就用RMQ,改成前缀和。 状态转移方程:f[i][j]=max(f[i][j-1],f[i+(1&lt;&lt;j-1)][j-1]) #pragma GCC optimize(2) #include &lt;cstdio&gt; #include &lt;cmath&gt; #include &l原创 2018-02-17 01:33:22 · 287 阅读 · 0 评论 -
#RMQ#poj 3264 Balanced Lineup
题目 询问一个区间内最大值与最小值的差。 分析 RMQ f[i][j]=max(f[i][j−1],f[i+2j−1)][j−1])f[i][j]=max(f[i][j−1],f[i+2j−1)][j−1])f[i][j]=max(f[i][j-1],f[i+2^{j-1})][j-1]) 代码 #include &lt;cstdio&gt; #include &lt;cc...原创 2018-06-20 20:55:56 · 290 阅读 · 0 评论 -
2018.07.13【2018提高组】模拟C组
前言:终于乐观(optimistic)(打表打漏了,还是比较高) JZOJ 3382 七夕祭 题目 环(jiang)形(de)均(tai)分(cao)纸(shuai)牌(le) 分析 首先在做这道题之前,要知道均分纸牌,设A[i]=C[i]−SUM/NA[i]=C[i]−SUM/NA[i]=C[i]-SUM/N,然后S[i]是A[i]的前缀和,答案就是∑|S[i]|∑...原创 2018-07-13 22:55:49 · 207 阅读 · 0 评论 -
#线段树,ST表#洛谷 1198 JZOJ 1714 最大数
题目 用一种数据结构满足末尾区间查询和单点修改 分析 那么这些线段树可以实现,但是这里讲ST表的方法,因为只是在末尾单点修改,所以说对原来的ST表是不受影响的,所以说ST表是一种码量比较小的数据结构,但是常数比线段树大了几倍 代码(jzoj要开long long) #include <cstdio> #include <cmath> #include <cctyp...原创 2019-01-24 07:36:41 · 249 阅读 · 0 评论 -
#trie,倍增,主席树#JZOJ 3794 高级打字机
题目 T x:在文章末尾打下一个小写字母x。(type操作) U x:撤销最后的x次修改操作。(Undo操作)(注意Query操作并不算修改操作) Q x:询问当前文章中第x个字母并输出。(Query操作)文章一开始可以视为空串。 分析 可持久化数据结构特别多,在此不多说,这种方法是Trie+倍增,bel表示版本,dep表示距离第一个版本的深度,fa[i][j]fa[i][j]f...原创 2018-07-10 18:49:31 · 302 阅读 · 0 评论 -
2018.07.10【2018提高组】模拟C组
前言: 今天同时做两个比赛(B组不一定今天能改完),但是C组做完了,最后一题单独放(太难了) 题目 JZOJ 3792 分队问题 JZOJ 3793 数字对 JZOJ 3794 高级打字机 后续 洛谷 2062 分队问题 2090 数字对 1383 高级打字机...原创 2018-07-10 15:02:53 · 292 阅读 · 0 评论 -
#快速幂#POJ 1995 Raising Modulo Numbers
题目 求(A1B1+A2B2+...+AHBH)modM.(A1B1+A2B2+...+AHBH)modM.(A1^{B1}+A2^{B2}+ ... +AH^{BH})mod M. 分析 用快速幂,把O(b)O(b)O(b)变成O(log2b)O(log2b)O(log_2b) 代码 #include &lt;cstdio&gt; #include &lt;cctype...原创 2018-05-13 14:56:10 · 195 阅读 · 0 评论 -
#二分,RMQ#jzoj 1372 与众不同
题目 求区间[l...r][l...r][l...r]数字互不相同的最长序列(完美序列)的长度(example:2 5 4 2可取2 5 4或5 4 2) 分析 一开始想的很简单,后来听取WA声一片,RMQ,首先先用一个last数组表示出现数字的上一个位置(因为有负数,所以程序上用了map),st数组表示区间[1...x][1...x][1...x]的完美序列的起始点,st[x]=max...原创 2018-07-06 16:31:05 · 787 阅读 · 3 评论 -
#倍增#洛谷 3252 树
题目 给定一个值S和一棵树。在树的每个节点有一个正整数,问有多少条路径的节点总和达到S。路径中节点的深度必须是升序的。假设节点1是根节点,根的深度是0,它的儿子节点的深度为1。路径不必一定从根节点开始。求路径节点总和为S的路径数量 分析 这道题可以用倍增做,用求LCA的方法,求出f数组,与此同时求出节点向上2x2x2^x的路径节点总和,然后扫描以某个节点为终点是否能求出答案 #in...原创 2018-08-15 16:41:06 · 260 阅读 · 0 评论 -
#RMQ,ST表#hdu 6356 Glad You Came
题目 经过一波玄学的操作得到左端点lll,右端点rrr,A[l,r]=max([l,r],value)A[l,r]=max([l,r],value)A[l,r]=\max([l,r],value) 多组数据,求xorni=1A[i]∗ixori=1nA[i]∗ixor_{i=1}^nA[i]*i 分析 这道题首先先放玄学操作 int answer(){ x^=(x<...原创 2018-08-16 21:57:59 · 186 阅读 · 0 评论 -
JZOJ 1370 飞船#RMQ#
很久很久以前我就想象着这个问题怎么办,原来是RMQ。 状态转移方程:f[i][j]表示i到i+2^(j-1)的最大值。 f[i][j]=max(f[i][j-1],f[i+1&lt;&lt;(j-1)][j-1]) 所以输出max(f[l][x],f[r+1-(1&lt;&lt;x)][x]) x=(int)(log(r-l+1)/log(2)) #pragma GC...原创 2018-02-17 00:19:16 · 254 阅读 · 0 评论