hyc的xor/mex 描述 NOIP2017就要来了,备战太累,不如做做hyc的新题? 找回自信吧! 一句话题意:n个数,m个操作 操作具体来讲分两步 1.读入x,把n个数全部xor上x 2.询问当前n个数的mex 意味着每次操作后你都需要输出一次 (注意:是mex,即集合内未出现过的最小非负整数 举2个例子 mex(4,33,0,1,1,5)=2 mex(1,2,3)=0) 输入 第一行两个整数n,m 意义同题面(1 ≤ n, m ≤ 3 * 10^5) 第二行 n个数 ai (0 ≤ ai…
or [描述] 构造一个长度为 n 的非负整数序列 x,满足 m 个条件,第 i 个条件为x[li] | x[li+1] | - | x[ri]=pi. [输入] 第一行两个整数 n,m.接下来 m 行每行三个整数 li,ri,pi. [输出] 如果存在这样的序列 x,第一行输出 Yes,第二行输出 n 个不超过 2^30-1 的非负整数表示x[1]~x[n],否则输出一行 No [输入样例 1] 2 1 1 2 1 [输出样例 1] 2 1 1 2 1 [子任务] 对于 30%的数据,n,m<…
传送门 将坐标离散化之后直接用尺取法(双指针)+线段树维护. 其实就是说只要目前所有点的被覆盖次数是大于等于m的就移动左指针删除区间更新答案,否则移动右指针加入区间更新答案. 话说忘记排序以及建树的时候参数带错是几个意思?? 代码: #include<bits/stdc++.h> #define N 500005 #define lc (p<<1) #define rc (p<<1|1) #define mid (T[p].l+T[p].r>>1) usin…
传送门 简单题. 先不管时间复杂度看看怎么做. 对于一段区间[l,r],如果从右端加入一个数a[r+1],对这个区间有什么影响?显然如果区间中已经有了a[r+1]这个数就会产生-a[i+1]的影响,否则就会产生a[i+1]的影响. 于是对于每个数维护一个pred[i]表示上一个a[i]这个数值的下标. 如果我们枚举右端点i,对于每一个i维护一个[j,i]的最大值.这样每次相当于对[pred[i]+1,i]这段区间做一个区间加,对[pred[pred[i]]+1,pred[i]]有一个区间减的效果…
2021.12.08 P1848 [USACO12OPEN]Bookshelf G(线段树优化DP) https://www.luogu.com.cn/problem/P1848 题意: 当农夫约翰闲的没事干的时候,他喜欢坐下来看书.多年过去,他已经收集了 N 本书 (1 <= N <= 100,000), 他想造一个新的书架来装所有书. 每本书 i 都有宽度 W(i) 和高度 H(i).书需要按顺序添加到一组书架上:比如说,第一层架子应该包含书籍1 ... k,第二层架子应该以第k + 1本…
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description The inversion number of a given number sequence a1, a2, -, an is the number of pairs (ai, aj) that satisfy i < j and ai > a…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747 题意:求一个数列中,所有mex(L,R)的和. 注意到mex是单调不降的,那么首先预处理出mex(1,j)的值,复杂度O(n),因为mex最大为n.同时预处理出每个数a[i]的右边第一次出现a[i]的位置,用next[i]表示.然后依次从1开始枚举起点 i,则就是求 i 到n的所有mex的和了.i从i+1变化,j>next[i]的mex值都不会变化,因为还是存在a[i].那么只要考虑i+1到n…
题意:给你一个序列,让你求出对于所有区间<i, j>的mex和,mex表示该区间没有出现过的最小的整数. 思路:从时限和点数就可以看出是线段树,并且我们可以枚举左端点i, 然后求出所有左端点为i的区间内mex值的和. 先把数插满,然后先询问后删除当前最左边的断点i.而且显然线段树里面保存的是mex值,而且这个序列是非递减的. 分析:我们先预处理出对于右端点为i的所有<1,i>的mex,分别插入线段树的i位置.然后每次删除最左边的左端点i ,假如当前我们要删除a[i] ,我们找到它之…
题目链接 题意:多次求区间\(mex\). 考虑\([1,i]\)的\(mex[i]\),显然是单调的 而对于\([l,r]\)与\([l+1,r]\),如果\(nxt[a[l]]>r\),那么\([l+1,r]\)中所有\(>a[l]\)的数显然要改成\(a[l]\) 把询问按左端点排序:离散化,预处理下\(nxt[]\),处理出\([1,i]\)的\(mex[i]\).剩下就是线段树的区间更新.单点查询了 /* 离散化的时候>=n的全部看做n就好了 查询时是只需查r点的(l之前能更新…
http://acm.hdu.edu.cn/showproblem.php?pid=4747 题意: 我们定义mex(l,r)表示一个序列a[l]....a[r]中没有出现过得最小的非负整数, 然后我们给出一个长度为n的序列,求他所有的连续的子序列的mex(l,r)的和. 思路: 首先因为n的最大值就是2*10^5 所有我们字需要考虑200000之内的数就好了,然后O(2*n)可以求出(1,1),(1,2), (1,3),(1,4) ... (1,n)来 mex是不减的. 然后我们考虑将第一个数…