摘要:【问题描述】 给定两个字符串A和B,表示JYY的两个朋友的名字。我们用A(i,j)表示A 字符串中从第i个字母到第j个字母所组成的子串。同样的,我们也可以定义B(x,y)。 JYY发现两个朋友关系的紧密程度,等于同时满足如下条件的四元组(i,j,x,y) 的个数: 1:1<=i<=j<=|A| 2:
阅读全文
08 2017 档案
摘要:Description 酒足饭饱之后。 一帮人都喝醉了。 嘛,由于酒驾查的很严格,所以说接下来就是送客人回家的难题了。 嘛,接下来就是操蛋的设定。 小T把喝醉的人分成了好多组,每一组要用一部车把他们送回家睡大觉。 然后呢,每一组可以租用的车子也是不一样的,具体而言,对于第i组,有T[i]种的车子(型
阅读全文
摘要:http://uoj.ac/problem/158 预处理dfs序,询问转为区间1的个数,用可持久化bitset预处理出所有可能的修改对应哪些位置,然后用一个bitset维护当前每个点的状态,修改时可以用xor实现
阅读全文
摘要:维护每个位置x的上一个相等的位置pv[x],可以把询问表示成l<=x<=r,pv[x]<l的形式,对一次修改,均摊改变O(1)个pv的取值,因此可以用平衡树预处理出pv的变化,用cdq分治处理查询。
阅读全文
摘要:用dfs序把询问表示成询问dfs序的两个区间中的信息 拆成至多9个询问(询问dfs序的两个前缀),对这些询问用莫队处理,时间复杂度$O(n\sqrt{m})$
阅读全文
摘要:将权值排序,设权值x排序后在[l,r]出现,x在区间中出现k次,则用[l,l+k-1]为1,[l+k,r]为0来表示x的出现次数 用bitset表示可重集中每个元素的出现次数,用莫队处理出询问区间对应的bitset,通过取and后求1的个数得到答案
阅读全文
摘要:用dfs序转为区间加,区间第k大 分块,块内维护排序后的权值,并记录每个权值原来在块中的位置。加法操作对于整块可以打标记,零散部分因为记了每个值排序前的位置,可以直接提取出块中待修改的部分,修改后用归并排序线性重构这个块,对于查询,先把零散部分提取出来,当作普通的块处理,然后二分答案,在每个块上再二
阅读全文
摘要:设第i个字母的权值为1<<i,则一个可重集合可以重排为回文串,当且仅当这个集合的异或和x满足x==x&-x,用莫队维护区间内有多少对异或前缀和,异或后满足x==x&-x,这样端点移动的代价为字符集大小+1=27,因此时间复杂度为$O(27n\sqrt{m})$
阅读全文
摘要:在线询问区间众数,传统的分块(记录块间众数和每个权值的出现次数)做法被卡空间(分块用的空间是O(块数*(块数+权值种类数))),因此考虑去掉出现次数较小的数,只用分块维护出现次数较大的数。设K为分界线,用原来的分块维护原序列中出现次数>K的数组成的部分,而出现次数<=K的数,可以通过记录一个数前面第
阅读全文
摘要:由于查询的是树链的并的信息,同时信息不能高效合并,只能考虑用bitset维护,小范围暴力预处理以便从bitset算出答案 对树分块,保证每块是连通的且直径较小,对分出的块缩点建新树,在新树上建树上ST表,用bitset保存信息,于是每条链只需用4个bitset合并,再暴力加上零散部分 考虑到bits
阅读全文
摘要:树链剖分,用zkw线段树维护每条链两个方向上对每一位的变换情况,由于位数较少,可以用两个unsigned long long表示
阅读全文
摘要:用莫队求出每个询问区间对应的bitset(表示每个权值是否出现过),对于加减可以用bitset移位后取and判断,对于乘法可以直接枚举约数
阅读全文
摘要:Description Mr.董已经成长为一个地区的领袖,真是妙啊。董所在的地区由n个小区域构成,这些小区域构成了一棵树,每个小 区域都有一个重要程度,一个连通块的重要程度为其包含的小区域重要程度之和。现在董想进行一些调查,由于1 号区域是领袖重地,他问你包含1号的重要程度前k小的连通块重要程度分别
阅读全文
摘要:设a[i]为当前方案中第 1..i 天变质的蔬菜有几个,b[i]为前i天至少能卖出几个,方案可行的条件是对任意i有a[i]<=b[i],用线段树维护b[i]-a[i]。 从小到大枚举天数,枚举到第w天时,对所有u>=w,b[u]+=m,表示第w天从可以卖0个变为m个 选一个蔬菜,在第w天变质,则相当
阅读全文
摘要:Description 神犇xzyo听说sl很弱,于是出了一题来虐一虐sl。一个长度为2n(可能有前缀0)的非负整数x是good的,当且仅当 存在两个长度为n(可能有前缀0)的非负整数a、b满足a+b==10n,并且对于0~9每个数位d,都有Sd(x)==Sd(a)+Sd( b)(Sd(x)为x的十
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1132 题意是给定a,b,l,r求[l,r]内有几个整数可以表示成ax+by(x,y为非负整数)。 直接算l<=ax+by<=r会重复计算一个数的多种表示方法,而两种表示方法
阅读全文
摘要:http://uoj.ac/problem/14 由于加入的边权递增,可以直接运行kruskal并支持撤销,但这样如果反复批量删边和撤销,时间复杂度会退化,因此需要对删边操作加上延时处理,只有在删边后下一个操作不是撤销时才执行删边。由于有撤销,并查集需要按秩合并且不路径压缩。 #include<bi
阅读全文
摘要:http://uoj.ac/problem/58 树上带修莫队模板题
阅读全文
摘要:http://uoj.ac/problem/49 这题二分答案可以做,同时存在另一个直接二分的解法。 考虑对每个点,二分能向左右延伸的最大半径,由于权值范围较大,不能O(1)查询向一侧走指定距离后到达的位置,又由于单调性,可以同时二分左右延伸的长度,如果可行考虑延长较短的一侧,否则缩短较长的一侧。
阅读全文
摘要:http://uoj.ac/problem/33 长链剖分,每条链用类似分块的方式维护深度%x=y的个数,可以自底向上合并信息。 #include<bits/stdc++.h> typedef long long i64; const int N=2e5+7; char rb[N*12],*rp=r
阅读全文
摘要:带修维护两点间简单路径能经过的最小点权,n,q<=1e5 可以用圆方树重构图为树:对每个点双联通分量新建一个点表示,到对应点连边,割边保留,删去其余边,每个新建的点维护所有孩子的最小值,外加树链剖分查询链最值,特判lca的父亲。 #include<bits/stdc++.h> const int N
阅读全文
摘要:求简单多边形内的最长线段长度 显然存在一组最优解,使其所在直线经过多边形的两个端点,枚举这两个端点,求出直线和多边形的有效交点,从而得出直线有哪些部分在多边形内(含边界)。 由于多边形的一些边可能与直线重合,求交需要一些分类讨论。 #include<bits/stdc++.h> typedef lo
阅读全文
摘要:Description 小Q是个程序员。众所周知,程序员在写程序的时候经常需要草稿纸。小Q现在需要一张草稿纸用来画图,但是桌上 只有一张草稿纸,而且是一张被用过很多次的草稿纸。草稿纸可以看作一个二维平面,小Q甚至已经给它建立了直 角坐标系。以前每一次草稿使用过的区域,都可以近似的看作一个平面上的一个
阅读全文
摘要:带修改,询问区间内出现次数大于区间长度一半的数个数,N,Q<=500000 如果一个数在一个区间内出现次数大于一半,那么在区间内随机抽一些数,抽到这个数的个数通常会很多,因此可以用平衡树维护每个权值的出现位置,只查询在抽查中出现次数充分多的数 具体的,最坏情况下一个数在区间内出现次数为1/2区间长度
阅读全文
摘要:正边权无向图,一条边两个方向权值不一定相同,求经过点1的最小简单环 简单环包含了点1的一条出边和一条入边,且这两条边不同,因此可以枚举这两条边的编号的二进制表示中哪一位不同,用最短路求此时的最优解,时间复杂度$O(mlog^2m)$
阅读全文
摘要:无修改询问区间最长子串满足它是一个括号序列,N,Q<=400000 考虑分治,处理跨过分治中点的询问 预处理在中点一侧的最优答案,剩下只有最优答案跨过中点的情况,可以两侧贪心取前缀和最小位置,再进行调整,如图 时间复杂度O(nlogn) #include<bits/stdc++.h> const i
阅读全文
摘要:Description 有一个神秘好人跟Bdcxq玩一个游戏,如果Bdcxq成功完成了这个游戏,那么他将会得到一件礼物。 这个游戏是这样的: 有一个梯子形的图如下,每条边都有一个权值。 神秘好人一开始会告诉Bdcxq每条边的权值。 然后神秘好人会做这样的事情: 1.神秘好人会修改某条边的权值; 2.
阅读全文
摘要:只需写一个解释器 第一次预处理将输入进行分词,分割出 关键字,运算符,变量/函数名,整数常量,并对变量/函数名离散化以便处理 第二次预处理建语法树,每个节点存节点类型,变量定义表等信息 运行时在语法树上递归处理,维护一个栈存运行中用到的变量 #include<cstdio> #include<map
阅读全文
摘要:Description 你办了一场比赛,有n给人参加,只有一道题,有m个数据点,标号为1~m,每个测试点都有一个分数a[i]。现在所 有选手已经提交了程序并且测评完了,你知道每个人都能通过哪些测试点。你现在要安排捆绑测试的方式,把数据 点划分为若干个连续的区间,每个区间至少有一个测试点。每个区间只要
阅读全文
摘要:给出N个点的坐标,要求能够覆盖其中至少K个点的圆的最小半径及圆心位置。 最优答案圆周上一定有点,枚举这个点,二分半径扫描线判定,随机打乱输入顺序并加上最优性剪枝,由于答案期望变优$O(logn)$次,期望时间复杂度为$O(n^2logn+nlognlog(\frac{MaxAns}{eps}))$
阅读全文
摘要:Description 给出一个N个顶点的简单多边形,对于每个顶点,假如它和原点连成的线段只在这个顶点处和多边形相交,就称为满足要求的顶点。你的任务是输出所有满足要求的顶点编号。 给出一个N个顶点的简单多边形,对于每个顶点,假如它和原点连成的线段只在这个顶点处和多边形相交,就称为满足要求的顶点。你的
阅读全文
摘要:Description N个点m条边,每个点有一个点权a。对于任意一个三元环(j,j,k)(i<j<k),它的贡献为max(ai,aj,ak) 求所有三元环的贡献和。N<100000,,m<250000。 对度数大的点w,枚举w相邻的每个点u1,u2,u3...,遍历u[a]相邻的点的统计w,u[a
阅读全文
摘要:Description 有一个集合U={1,2,…,n),要从中选择k个元素作为一个子集A。若a∈A,则要有a*X不属于A,x是一个给定的数。求可选方案对M取模后的值。 1< = N< = 10^18,2< = m< = 1000000,0< = K< = 1000,2< = x< = 10。 有一
阅读全文
摘要:Description 【题目背景】 Theresa是个爱思考的女孩…… 【问题描述】 这是个复杂的世界。人类社会,自然界,还有地球之外的银河…… 每一天日出日落,人来人往,步履匆匆。究竟是为什么呢?那支配着一切的至高无上的法则又是否存在呢?Theresa知道,这个问题并不是一朝一夕就可以解答的,只
阅读全文
摘要:Description 沫沫非常喜欢看足球赛,但因为沉迷于射箭游戏,错过了最近的一次足球联赛。此次联 赛共N支球队参加,比赛规则如下: (1) 每两支球队之间踢一场比赛。 (2) 若平局,两支球队各得1分。 (3) 否则胜利的球队得3分,败者不得分。 尽管非常遗憾没有观赏到精彩的比赛,但沫沫通过新闻
阅读全文
摘要:Description 魔塔是一款很流行的益智类小游戏。在游戏中,你可以控制主人公在魔塔中移动,走到怪兽面前便可以和怪兽来决斗,打败怪兽后可以得到金钱,并可以通过金钱来提高自己的攻击力、防御力、血量,从而变得更强大。然而,即便你拥有再高的攻击力、防御力,可以天下无敌,但一扇小小的门就可以阻止你无法前
阅读全文
摘要:Description Orez很喜欢搜集一些神秘的数据,并经常把它们排成一个矩阵进行研究。最近,Orez又得到了一些数据,并已经把它们排成了一个n行m列的矩阵。通过观察,Orez发现这些数据蕴涵了一个奇特的数,就是矩阵中上下对称且左右对称的正方形子矩阵的个数。 Orez自然很想知道这个数是多少,可
阅读全文