自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

beginend

只要在路上,就没有到不了的远方

  • 博客(82)
  • 收藏
  • 关注

原创 51nod 1768 Rikka with Sequences KDtree维护历史最大值

题意众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习,其中有一道是这样的: 勇太有一个长度为 n 的数组A 和一个大小为n×n 的二维数组B,最开始Bi,j=∑jk=iAkB_{i,j}=\sum_{k=i}^jA_k 。 接下来勇太进行了两种操作: 1. 给出两个整数 ll 和 xx ,把 AiA_i 的值变成 xx 。 2. 给出两个整数 ll 和 rr ,保证 l<rl

2017-10-31 21:08:31 553

原创 bzoj 3064: Tyvj 1518 CPU监控 线段树维护历史最大值

题意有一个序列A,要求资瓷以下操作: Q X Y:询问[X,Y]的最大值 A X Y:询问[X,Y]的历史最大值 P X Y Z:把[X,Y]每个元素增加Z C X Y Z:把[X,Y]每个元素变为Z n,m<=100000分析维护最大值就十分的容易,问题在于如何维护历史最大值。 为了维护历史最大值,我们需要多维护两个值:历史加标记最大值和历史覆盖标记最大值。 儿子历史最大:儿子历史最

2017-10-31 19:55:51 478

原创 51nod 1230 幸运数 数位dp

题意如果一个数各个数位上的数字之和是质数,并且各个数位上的数字的平方和也是质数,则称它为幸运数。 例如:120是幸运数,因为120的数字之和为3,平方和为5,均为质数,所以120是一个幸运数字。 给定x,y,求x,y之间( 包含x,y,即闭区间[x,y])有多少个幸运数。 1 <= T <= 10000,1 <= X <= Y <= 10^18分析一开始想的是设f[i,0/1,j,k]表示做到

2017-10-31 14:54:39 388

原创 51nod 1488 帕斯卡小三角 单调栈维护凸壳+二分

题意f(1,j)=a[j], 1≤j≤n. f(i,j)=min(f(i-1,j),f(i-1,j-1))+a[j], 2≤i≤n, i≤j≤n. a是一个长度为n的数组。现在有若干个询问,输入x,y,求f(x,y) n,q<=100000分析显然要求的是从第一层某个点(1,s)到(x,y)的最短路径。 yy一下不难发现路径必然是从某个(1,s)走到(x-y+s,s)然后再沿着对角线走到(x

2017-10-31 11:20:14 424

原创 51nod 1551 集合交易 匈牙利算法+最大权闭合子图

题意市场中有n个集合在卖。我们想买到满足以下要求的一些集合,所买到集合的个数要等于所有买到的集合合并后的元素的个数。 每个集合有相应的价格,要使买到的集合花费最小。 这里我们的集合有一个特点:对于任意整数k(k>0),k个集合的并集中,元素的个数不会小于k个。 现在让你去市场里买一些满足以上条件集合,可以一个都不买。 1≤n≤300分析我好菜呀~~根据任选k个集合其并集大小不小于k的性质,可

2017-10-31 07:56:37 368

原创 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], …, a

2017-10-30 21:36:43 353

原创 51nod 1222 最小公倍数计数 莫比乌斯反演+杜教筛

题意定义F(n)表示最小公倍数为n的二元组的数量。 即:如果存在两个数(二元组)X,Y(X <= Y),它们的最小公倍数为N,则F(n)的计数加1。 例如:F(6) = 5,因为[2,3] [1,6] [2,6] [3,6] [6,6]的最小公倍数等于6。 给出一个区间[a,b],求最小公倍数在这个区间的不同二元组的数量。 例如:a = 4,b = 6。符合条件的二元组包括: [1,4]

2017-10-30 20:03:23 347

原创 51nod 1250 排列与交换 动态规划

题意一个数组A = [1, 2, 3, …, n]。 对A进行好恰好k次相邻交换,能得到多少个不同的序列 (S1)? 对A进行最多k次交换,你能得到多少个不同的序列 (S2)? 由于结果很大,输出Mod 1000000007的结果。 1 <= N, K <= 3000分析对于第一问,设f[i,j]表示长度为i的排列,交换恰好k次能得到多少不同的序列。 有f[i,j]=∑jk=max(0,j

2017-10-30 15:46:14 418

原创 Codeforces 626F Group Projects 动态规划

题意 1<=n<=200,0<=k<=1000,1<=Ai<=500分析先排序,那么一个集合的最大最小值肯定就是其在序列两端的值。 那么显然起点的系数是-1,终点的系数是1。 一开始想的是设f[i,j,k]表示前i个数,还有j个起点没被匹配,前面所有的终点-起点-这j个起点的值为k的方案数。 但由于起点数不定,所以k的范围会超级大,导致超时。 发现可以把每个起点加上当前点的权值,这样第三维

2017-10-30 11:50:41 386 1

原创 51nod 1299 监狱逃离 树形dp

题意监狱有N条道路连接N + 1个交点,编号0至N,整个监狱被这些道路连在一起(任何2点之间都有道路),人们通过道路在交点之间走来走去。其中的一些交点只有一条路连接,这些点是监狱的出口。在各个交点中有M个点住着犯人(M <= N + 1),剩下的点可以安排警卫,有警卫把守的地方犯人无法通过。给出整个监狱的道路情况,以及犯人所在的位置,问至少需要安排多少个警卫,才能保证没有1个犯人能够逃到出口,如果总

2017-10-30 10:52:54 583

原创 51nod 1833 环 状压dp+图论

题意有一个有向图。这张图有n个点和m条有向边。 他很好奇不相交的环(简单环)来覆盖所有点的方案数(数字可能很大请模998,244,353)。 1<=n<=20,1<=m<=n*(n-1)分析我好菜呀,比赛的时候一堆人都切了然而我想了一晚上都还是不会。。。其实,不相交的环覆盖数量就相当于把原图变成二分图后完美匹配的方案数。 具体来说就是对于原图中一条i->j的边,变成i->j’。 然后就可以随

2017-10-30 07:41:16 416

原创 51nod 1920 空间统计学 动态规划

题意有个m维的空间,并且每一维的坐标x都满足x∈ [0, 3]并且x为整数。 这个空间有n个部落,每个部落都坐落在这片空间中的一个点上,可以用坐标(x1, x2, …, xm)来表示。 有些部落可能在在同一个点上面。 定义两个点的距离为它们的曼哈顿距离,即每一维坐标差的绝对值的和。 比如对于点(x1, x2, …, xm)和(y1, y2, …, ym),它们之间的距离为 现在对0~3m之

2017-10-29 21:39:17 432

原创 51nod 1592 数列积 莫队算法+树状数组

题意小明有一个含有n个数的数列 a1,a2,…,an 。 他定义一个数列的积为∑ni=1∑nj=i|ai−aj∗(j−i)\sum_{i=1}^n\sum_{j=i}^n|a_i-a_j*(j-i) 他发现算出数列积实际上非常简单。因此他现在有了一个绝妙的主意。 他有Q个询问。 对于每个询问会给定两个参数 l,r 。 他想知道的是,将 al,al+1,…,ar 拿出来成为一个数列,问该数列

2017-10-29 21:04:17 430

原创 51nod 1447 好记的字符串 状压dp

题意现在有n个长度一样的字符串,我们说这些字符串是好记的当且仅当,每一个字符串存在一个位置i,其它字符串在i位置的字符和它不一样。 例如{“abc”, “aba”, “adc”, “ada”}这些字符串是不好记的。 而{“abc”, “ada”, “ssa”}这些是好记的: · 对于第一串,在第3个位置,只有它有c; · 对于第二个串,在第2个位置,只有它有d;

2017-10-29 14:57:27 496

原创 51nod 1407 与与与与 dp+容斥原理

题意有n个整数,问从他们中取出若干个数字相与之后结果是0的有多少组。 答案比较大,输出对于 1,000,000,007 (1e9+7)取模后的结果。 1<=n<=1,000,000,0<=a[i]<=1,000,000分析我们设f(x)表示有多少个i满足a[i]&x=x。 那么根据容斥原理,答案显然为∑220x=0(−1)cnt(x)∗(2f(x)−1)\sum_{x=0}^{2^{20}}

2017-10-29 10:52:04 825 2

原创 bzoj 5072: [Lydsy十月月赛]小A的树 树形dp

题意给一棵大小为n的树,每个点为黑色或白色。有q次询问,每次询问x,y表示询问是否能找出一个大小为x的连通子图使得其黑点数量恰好为y。 n<=5000,q<=100000分析直接设树形dp,f[i,j]表示以i为根的子树,包含i且有j个黑点的连通子图的最小大小,也就是下界,g[i,j]表示上界。 转移比较显然。 然后扔到一个数组里面差分一下扫一遍,就可以O(1)询问了。代码#include<i

2017-10-28 08:01:18 518

原创 bzoj 5071: [Lydsy十月月赛]小A的数字 乱搞

题意小A成为了一个数学家,他有一串数字A1,A2…An 每次可以进行如下操作,选择一个数字i(1 < i <= n),将(Ai-1,Ai,Ai+1) 变为(Ai-1 + Ai,-Ai,Ai+1 + Ai),特别地,若i=N,则(An-1,An)变为 (An-1 + An,-An).小A很好奇,能否通过若干次操作,得到他的幸运数列B1,B2…Bn.可是他太小,不会算,请你帮帮他 n<=1000

2017-10-28 07:56:34 448

原创 51nod 1450 闯关游戏 期望dp

题意一个游戏App由N个小游戏(关卡)构成,将其标记为0,1,2,..N-1。这些小游戏没有相互制约的性质,玩家可以任意时刻玩任意一个小游戏,且每个小游戏可以玩任意多次,一个小游戏玩一次消耗玩家恰好1min的时间。每个小游戏会根据玩家的表现返回3种结果:1)挑战失败;2)挑战成功并获得1颗星;3)挑战成功且获得2颗星。玩家可以多次挑战同一个小游戏,而且系统会记录玩家多次挑战中的最好成绩。(注意:两颗

2017-10-27 16:55:57 317

原创 51nod 1197 字符串的数量 V2 dp+矩阵乘法

题意用N个不同的字符(编号1 - N),组成一个字符串,有如下要求: (1) 对于编号为i的字符,如果2 * i > n,则该字符可以作为结尾字符。如果不作为结尾字符而是中间的字符,则该字符后面可以接任意字符。 (2) 对于编号为i的字符,如果2 * i <= n,则该字符不可以作为结尾字符。作为中间字符,那么后面接的字符编号一定要 >= 2 * i。 问有多少长度为M且符合条件的字符串,由于

2017-10-26 21:13:03 270

原创 51nod 1149 Pi的递推式 数学

题意F(x) = 1 (0 <= x < 4) F(x) = F(x - 1) + F(x - pi) (4 <= x) Pi = 3.1415926535….. 现在给出一个N,求F(N)。由于结果巨大,只输出Mod 10^9 + 7的结果即可。 1 <= N <= 10^6分析题目其实可以看成从0开始,每次往后走1或Pi,问走到(n-4,n]的方案数。 考虑最后一步走1,那就是走到(n

2017-10-26 20:10:11 263

原创 51nod 1583 犯罪计划 dp+矩阵乘法+hash

题意文泽想在埃及做案n次,并且想在最后不用得到惩罚。案件的被分成几种类型。比如说,案件A,当案件A被重复犯两次时,案件A将被认为不是犯罪案件,因此犯案人不用得到惩罚。也就是说,案件A被犯偶数次时,犯案人将不用得到惩罚。又比如案件B,当案件B被犯的次数是5的倍数时,犯案人将不用得到惩罚。 更具体的说,现在知道有c组条件。每组条件包含的信息如下: 1. 案件类型 ti , 2. 底数 mi ,

2017-10-26 19:16:41 341

原创 约瑟夫环问题学习小记

问题的提出有n个人围成一个圈,按顺时针编号为1到n。现在从编号为1的人开始报1,下一个人报2,如此类推,报到m的人就退出,接着下一个人继续从1开始报。问最后一个剩下的人是谁。解法1可以通过链表的形式来模拟这个过程,时间复杂度为O(nm)O(nm)。解法2我们把每个人的编号都-1,也就是编号变为了从0到n-1,显然这两个问题是等价的。 第一个出去的人的编号肯定是(m−1)modn(m-1)\bmod

2017-10-26 08:03:20 287

原创 51nod 1440 迈克打电话 后缀数组+可持久化线段树+二分

题意有n只熊,从1到n进行编号。 第i只熊的电话号码是si。每只熊会给那些电话号码是他的子串的熊打电话(可能会给自己打)。 call(i, j) 表示第i只熊给第j只熊打电话的次数,也就是第j个串在第i个串中出现的次数。 迈克会有q次询问。每个询问中给出l,r,k,然后请您计算一下∑ri=lcall(i,k)\sum_{i=l}^rcall(i,k)。 1 ≤ n ≤ 2 × 10^5 ,

2017-10-25 15:41:31 309

原创 51nod 1561 另一种括号序列 单调队列+hash+二分

题意有一个括号序列,可以对其进行两种操作: · 向里面加一个括号,可以在开头,在结尾,在两个括号之间加。 · 对当前括号序列进行循环移动,即把最后一个括号拿到开头来。 上述两种操作可以做任意次,要求添加最少的括号使得原序列变成一个合法括号序列。如果有多种可能,输出字典序最小的那一个。”(” < “)”。 len<=1000000分析假设左括号数量A大于右括号数量B

2017-10-24 21:43:12 420

原创 51nod 1618 树或非树 树链剖分+线段树

题意G是一张由n个点和n条边组成的无向图。G中没有自环和重边。每条边有两种状态“开”和“关”。一开始,所有的边都是“关”着的。 现在有m个操作(v,u),表示将从v到u的最短路上的边改变状态(如果状态为“开”则变成“关”,反之,变成“开”)。如果v到u存在多条最短路,则我们选取点序列字典序最小的那一条。 比如,将所有从v到u的路径上的点表示成序列为 v,v1,v2,…,u 。那么我们从中取字典序

2017-10-24 20:15:58 556

原创 51nod 1582 n叉树 dp+矩阵乘法

题意有一棵n叉树,深度是无限的,每个结点有n个儿子。从左到右编号为1到n号儿子,第i号儿子离该结点的距离是di。现在要统计一下距离根结点不超过x的结点有多少个。 数字比较大对 109 + 7 取余后输出。 样例解释: 图中黄色的结点是距离根不超3的。 1≤n≤10^5,0≤x≤10^9,1<=di<=100分析注意到di很小,考虑设f[i]表示离根节点距离为i的节点数量。用矩阵快速幂优化

2017-10-24 16:26:57 332

原创 51nod 1565 模糊搜索 fft

题意有两个基因串S和T,他们只包含AGCT四种字符。现在你要找出T在S中出现了几次。 有一个门限值k≥0。T在S的第i(1≤i≤|S|-|T|+1)个位置中出现的条件如下:把T的开头和S的第i个字符对齐,然后T中的每一个字符能够在S中找到一样的,且位置偏差不超过k的,那么就认为T在S的第i个位置中出现。也就是说对于所有的 j (1≤j≤|T|),存在一个 p (1≤p≤|S|),使得|(i+j-1

2017-10-24 15:35:25 457

原创 bzoj 2115: [Wc2011] Xor 线性基+dfs树

题意给出一个带权无向图,求一条1到n的路径使得其路径上边权的异或和最大。 n<=50000,m<=100000分析把dfs树建出来后,所有边要么是树边要么是非树边。显然我们可以通过走一条反祖边来使我们的答案异或上该返祖边所在环的权值。那么就把所有环的权值扔到线性基里面,最后取个最大的即可。代码#include<iostream>#include<cstdio>#include<cstdlib>

2017-10-24 08:20:44 225

原创 51nod 1617 奇偶数组 分治

题意a是一个包含n个元素的数组。对a中的元素进行1-n编号。 定义“偶数组” even, eveni=a2i(1≤2i≤n) ,即“偶数组” even是由数组a中编号为偶数的元素组成的。 定义“奇数组” odd, eveni=a2i−1(1≤2i−1≤n) ,即“奇数组”odd是由数组a中编号为奇数的元素组成的。然后,我们定义一个转换方程F(a),F(a)的结果为一个数组,过程如下:当n>1时,

2017-10-24 08:08:31 569

原创 51nod 1615 跳跃的杰克 乱搞

题意杰克最近正在努力锻炼他的跳跃技能。当前他正站在X坐标轴原点上。他想跳到坐标(x,0)上,为了达到训练效果,他决定首次跳跃的距离是1,之后每一次跳跃的距离将会比上一次跳跃的距离大1个单位。每一次跳跃,他可以选择往左或者往右跳。他很好奇至少要经过多少次跳跃才能到达终点。 -10^9<=x<=10^9分析简单题。 先不停地向原点跳,直到跳过之后。这时会有一个会跳的过程,假设把向前跳x变成向后跳x,

2017-10-23 21:35:34 295

原创 bzoj 2438: [中山市选2011]杀人游戏 强连通分量

题意一位冷血的杀手潜入 Na-wiat,并假装成平民。警察希望能在 N 个人里面,查出谁是杀手。警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他认识的人, 谁是杀手, 谁是平民。 假如查证的对象是杀手, 杀手将会把警察干掉。现在警察掌握了每一个人认识谁。每一个人都有可能是杀手,可看作他们是杀手的概率是相同的。问:根据最优的情况,保证警察自身安全并知道谁是杀手的概率最大是多少? 1

2017-10-23 21:05:05 311

原创 bzoj 4237: 稻草人 cdq分治+单调栈+二分

题意JOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典。 有一次,JOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地。和启示中的一样,田地需要满足以下条件: 田地的形状是边平行于坐标轴的长方形; 左下角和右上角各有一个稻草人; 田地的内部(不包括边界)没有稻草人。 给出每个稻草人的坐标,请你求出有多少遵从启示的田地的个数 1<=N<=2*10^5。

2017-10-23 19:57:53 279

原创 bzoj 2734: [HNOI2012]集合选数 状压dp

题意《集合论与图论》这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中。同学们不喜欢这种具有枚举性 质的题目,于是把它变成了以下问题:对于任意一个正整数 n≤100000,如何求出{1, 2,…, n} 的满足上述约束条件的子集的个数(只需输出对 1,000,000,001 取模的结果),现在这个问题就

2017-10-23 08:41:54 264

原创 bzoj 1978: [BeiJing2010]取数游戏 game 数学

题意小 C 刚学了辗转相除法,正不亦乐乎,这小 P 又出来捣乱,给小 C 留了个 难题。 给 N 个数,用 a1,a2…an来表示。现在小 P 让小 C 依次取数,第一个数可以 随意取。假使目前取得 aj,下一个数取ak(k>j),则ak必须满足gcd(aj,ak)≥L。 到底要取多少个数呢?自然是越多越好! 不用多说,这不仅是给小 C 的难题,也是给你的难题。 N≤50 000,2≤L≤ai≤1

2017-10-22 21:52:28 361

原创 bzoj 1406: [AHOI2007]密码箱 数学

题意在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子背面刻着的古代图标,就是对密码的提示。经过艰苦的破译,小可可发现,这些图标表示一个数以及这个数与密码的关系。假设这个数是n,密码为x,那么可以得到如下表述: 密码x大于等于0,且小于n,而x的平方除以n,得到的余数为1。 小可可知道满足上述条件的x可能不止一个,所以一定要把所有满足

2017-10-22 21:41:41 303

原创 bzoj 3533: [Sdoi2014]向量集 线段树+凸包+二分

题意维护一个向量集合,在线支持以下操作: “A x y (|x|,|y| < =10^8)”:加入向量(x,y); ” Q x y l r (|x|,|y| < =10^8,1 < =L < =R < =T,其中T为已经加入的向量个数)询问第L个到第R个加入的向量与向量(x,y)的点积的最大值。 集合初始时为空。强制在线。 1 < =N < =4×10^5分析世界上最开心的事情莫过于一遍AC

2017-10-22 20:14:11 298

原创 bzoj 4403: 序列统计 lucas定理+组合数学

题意给定三个正整数N、L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量。输出答案对10^6+3取模的结果。 1≤N,L,R≤10^9,1≤T≤100,输入数据保证L≤R。分析一开始没想到把不降转为递增来求。 对于一个长度为n的不降序列,若我们把第i个数加上i,那么它就是一个递增序列。也就是说,长度为i且元素在[1,m]之间的不降序列数量就相当于元素在[1+1,m+n]之间

2017-10-21 08:14:49 456

原创 bzoj 1816: [Cqoi2010]扑克牌 二分

题意你有n种牌,第i种牌的数目为ci。另外有一种特殊的牌:joker,它的数目是m。你可以用每种牌各一张来组成一套牌,也可以用一张joker和除了某一种牌以外的其他牌各一张组成1套牌。比如,当n=3时,一共有4种合法的套牌:{1,2,3}, {J,2,3}, {1,J,3}, {1,2,J}。 给出n, m和ci,你的任务是组成尽量多的套牌。每张牌最多只能用在一副套牌里(可以有牌不使用)。 n<=

2017-10-20 22:05:23 411

原创 bzoj 2565: 最长双回文串 manachar

题意顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同)。 输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。 2≤|S|≤10^5分析直接用manachar求出f[i]表示以i为结尾的最长回文串,g[i]表示以i为开头的最长回文串,然后扫一遍即可。代码#i

2017-10-20 21:18:49 339

原创 bzoj 3171: [Tjoi2013]循环格 费用流

题意一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子。每个元素有一个坐标(行,列),其中左上角元素坐标为(0,0)。给定一个起始位置(r,c) ,你可以沿着箭头防线在格子间行走。即如果(r,c)是一个左箭头,那么走到(r,c-1);如果是右箭头那么走到(r,c+1);如果是上箭头那么走到(r-1,c);如果是下箭头那么走到(r+1,c);每一行和每一列都是循环的,即如果走出边界,你会出

2017-10-20 20:43:44 227

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除