关闭

区间第k小

题目大意给你一个序列元素均在[0,n)内,并给定常数w。 每次在线询问区间第k小,要求忽略区间出现次数>w的数。根号算法我们不妨考虑如何离线。 可以使用莫队+线段树做到 n根号n log n,非常菜鸡。 可以发现我们只有n次询问却有n根号n次插入删除,如果我们使用线段树是很亏的。 考虑经典套路即平衡复杂度: kth是有办法O(1)-O(√n)的,具体做法是维护值域分块,以及一个桶。 值域...
阅读(64) 评论(0)

摧毁图状树

题目大意Q次询问,每次给一个k。 将树用尽量少的长度不超过k的祖先后代链覆盖,使得每个点至少覆盖一次。贪心对偶成选择尽量多的点,使得任意长度不超过k的祖先后代链上至多一个点被选择。 这样转化则贪心很显然。尽量选深度大的点。 如果有t个叶子,选取的点至多为t+(n-t)/k。 因为叶子一定会被选择,同样删去所有被选择的点后,每个联通块大小不会小于k(否则一定在原来的树中存在长度不超过k的祖先后...
阅读(129) 评论(0)

回转寿司

题目描述分块你考虑有一堆人,价格为x的进去了出来会变成啥样。 那么肯定是找到这堆人所持价格的最大值y,如果x>y,出来的还是y,否则x会变成某个人手里的,然后出来的是y。 我们考虑分块,每个块维护一个数堆。 如果x要经过一个块,可以丢进数堆,再取出一个最大值。然后还要给这个块打上一个标记。 但是对于零散的不是很好做,即重构块,我们如何快速得到每个位置经过一系列标记后的值? 注意这个问题具有...
阅读(62) 评论(0)

[CodeM初赛A轮]E

题解大小点分治。 出现次数大于阈值的,处理前缀和,然后暴力枚举一个询问判断。 出现次数小于阈值的,跑莫队,维护每个数出现次数,以及每种出现次数的数的个数,然后询问可以暴力枚举出现次数。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int max...
阅读(290) 评论(2)

[bzoj4815][CQOI2017]小Q的表格

题目描述小Q是个程序员。 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理。每当小Q不知道如何解决 时,就只好向你求助。为了完成任务,小Q需要列一个表格,表格有无穷多行,无穷多列,行和列都从1开始标号。 为了完成任务,表格里面每个格子都填了一个整数,为了方便描述,小Q把第a行第b列的整数记为f(a,b),为了完成 任务,这个表格要满足一些条件:(1)对任意的正...
阅读(147) 评论(0)

[CF538F]A Heap of Heaps

题目大意懒得写做法从0开始标号。 注意i是父亲是(i-1)/k 因此可以分块 对一段产生的影响可以在数组上打tag#include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace std; const int m...
阅读(55) 评论(0)

[bzoj4035]数组游戏

题目描述有一个长度为N的数组,甲乙两人在上面进行这样一个游戏:首先,数组上有一些格子是白的,有一些是黑的。然 后两人轮流进行操作。每次操作选择一个白色的格子,假设它的下标为x。接着,选择一个大小在1~n/x之间的整数 k,然后将下标为x、2x、…、kx的格子都进行颜色翻转。不能操作的人输。现在甲(先手)有一些询问。每次他 会给你一个数组的初始状态,你要求出对于这种初始状态他是否有必胜策略。好题...
阅读(136) 评论(0)

[bzoj4816][SDOI2017]数字表格

题目描述Doris刚刚学习了fibonacci数列。用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师的超级计算机生成了一个n×m的表格,第i行第j列的格子中的数是f[gcd(i,j)],其中gcd(i,j)表示i, j的最大公约数。Doris的表格中共有n×m个数,她想知道这些数的乘积是多少。答案对10^9+7取...
阅读(171) 评论(0)

[bzoj3509][codechef]COUNTARI

题目大意求有多少对i<j<ki<j<k 满足a[j]-a[i]=a[k]-a[j]分块FFT口胡里写过了。 枚举j,我们可以得到两边的生成函数。 只要卷积起来看2*a[j]项的系数就可以统计了。 这样做显然不行。 考虑分块。 对于i或k在块内的情况,用枚举来暴力统计。 而对于i与k均不在块内的情况,用FFT。#include #include #i...
阅读(120) 评论(0)

[luoguP3674]小清新人渣的本愿

题目大意询问区间是否存在两个数和为x/差为x/积为x 这两个数可以使同一个数bitset不会bitset的蒟蒻哭了 维护bitset加和减就随便做了。 积就枚举较小数 上个莫队算法来维护我们需要维护的#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using n...
阅读(239) 评论(0)

[hackerrank]Range Modular Queries

题目大意区间询问模x等于y的值的个数 值域是[0,40000] 允许离线平衡结合对于x200的询问,因为x较大所以符合条件的数很小,这时候可以考虑使用莫队。 维护一个桶,每次询问只要看一下对应符合的数字有多少个即...
阅读(175) 评论(0)

Sequence

题目大意若干个区间询问 每次询问∑ri=l∑rj=lw((ai,aj))\sum_{i=l}^r\sum_{j=l}^rw((ai,aj)) w(x)表示x的不同质因子数。上以根号n为阈值,用两种算法。 小于等于根号n的质数枚举+前缀和 大于根号n的就上莫队 当然直接莫队也能8nn√8n\sqrt n#include #include #define...
阅读(87) 评论(0)

J

题目描述分块2*3的矩形可以压成64以内的二进制数。 我们分块,对于每块,维护块内每个前缀异或的桶,以及整个块异或值,因为有区间修改还要有修改tag,然后便容易询问与修改。#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) #define fd(i,a,b) for(i=a...
阅读(105) 评论(0)

[51nod 1471]小S的兴趣

题目描述小S喜欢有趣的事。但是,每个人的兴趣都是独特的。小S热衷于自问自答。有一天,小S想出了一个问题。 有一个包含n个正整数的数组a和针对这个数组的几个问题。这些问题有两种类型: 1. 在数组下标l到r的部分上,将一个单元格循环移动到右端。即以下面方式重新分配数组上的元素。 a[l], a[l+1], …, a[r-1], a[r] → a[r], a[l], a[l+1], …,...
阅读(104) 评论(0)

[51nod 1203]JZPLCM

题目大意求区间lcm。带模运算。做法不知道有没有更简单的做法。 最小公倍数是什么意思?一堆数的最小公倍数,就是对于每一个质数p,这些数每个数中p的次数的最大值k,然后最小公倍数就会包含一个p^k。 p很大时k会很小,p很小时k会很大,这是两个互相制约的因素,因此考虑使用两种算法然后进行平衡结合。 设置阈值B=230(差不多就是√n) 对于所有<=B的质数p都枚举一遍,然后计算出每个数包含多少...
阅读(237) 评论(0)
43条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:209370次
    • 积分:9123
    • 等级:
    • 排名:第2025名
    • 原创:689篇
    • 转载:4篇
    • 译文:0篇
    • 评论:180条
    最新评论
    文章分类