- 博客(24)
- 收藏
- 关注
原创 Tree
题目大意有一颗点权树,选择k条点不相交的树路径,价值为覆盖点的点权和除以k+1。 现在你可以给每个点的点权由x变成(x+c)%lim。0<=c<=m。 保证m<lim,x<limm<lim,x<lim。 求最大价值。分数规划先考虑不改变点权或是说点权已知的做法。 怎么做都发现如果要求用几条树路径的最大价值,都无法很快的做。 因此正解肯定不用求用多少每条树路径的最大价值。 考虑分数规划。二
2016-12-24 16:47:19 449
原创 完全背包问题
题目大意做法定义有数量限制的叫大件,其余是小件。 考虑最小的那个体积v1。 如果连v1都是大件,DP容易解决。 不然的话,考虑在模v1意义下进行,最终要凑出的S必定是S%v1。 问题在于,凑出S%v1不一定能凑出S。 实际上,如果能凑出x,x+v1也能凑出。 因此考虑求出每个模意义下能凑出的最小数便可以每次判定能否凑出。 不过还有大件限制困扰我们。我们设f[i,j]表示用了i个大件,凑
2016-12-23 22:42:09 496
原创 最长不下降子序列
题目大意a1=t0 an=(A*an-1^2+B*an+C)%D(n>1) 求该序列最长不下降子序列长度暴力n不是很大显然可以暴力。 n很大呢? 那就不断减循环节长度直至减到一个阈值内,再暴力。 正确性显然,只要阈值不要设太小。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=
2016-12-23 22:32:52 455
原创 类欧几里得算法小结
基本定义f(a,b,c,n)=∑ni=0⌊ai+bc⌋f(a,b,c,n)=\sum_{i=0}^n\lfloor\frac{ai+b}{c}\rfloor g(a,b,c,n)=∑ni=0i⌊ai+bc⌋g(a,b,c,n)=\sum_{i=0}^ni\lfloor\frac{ai+b}{c}\rfloor h(a,b,c,n)=∑ni=0⌊ai+bc⌋2h(a,b,c,n)=\sum_{i=
2016-12-23 22:22:34 6368 4
原创 [51nod 1362]搬箱子
题目描述有一个n*m的棋盘,左上角为(0,0),右下角为(n,m).在左上角有一个箱子(箱子是放在交叉点上的)。现在要把箱子搬到最后一排。搬的时候只有向右,向下,或者向右下方走一步。也就是说,假如箱子在(x,y),那么下一步只能把他搬到(x+1,y)或(x,y+1)或(x+1,y+1). 问有多少种的走法可以把箱子从左上角搬到最后一排。由于数目巨大,对X取余输出即可。题目大意考虑走到(n,j)的方
2016-12-21 22:43:21 818
原创 [51nod 1139]奇妙等式的解
题目描述五个不同自然数a < b < c < d < e 满足a^2 + b^2 + c^2 + d^2 + e^2 = abcde。给出1个数N,求e <= N的全部的解。构造考虑构造算法。 假如a,b,c,d,e是合法解。 bcde-a,b,c,d,e也是合法解 同理有a,acde-b,c,d,e也是…… 注意这里的合法解不考虑a<b<c<d<ea<b<c<d<e 可以证明所有解是联通
2016-12-21 22:34:06 743
原创 [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], …,
2016-12-21 20:42:00 539
原创 [51nod 1327]棋盘游戏
题目描述有一个N行M列的棋盘,即该棋盘被分为N*M格。现在向棋盘中放棋子,每个格子中最多放一个棋子,也可以一个不放。放完棋子后需要满足如下要求: 1)对于第i行来说,其从左往右的前left[i] 个格子(即最左侧的left[i] 个连续的格子)中恰好一共有1个棋子; 2)对于第i行来说,其从右往左的前right[i]个格子(即最右侧的right[i]个连续的格子)中恰好一共有1个棋子; 3)对
2016-12-21 20:38:57 702
原创 [51nod 1587]半现串
题目大意有两个串S,T。T的长度是d。我们说T在S中半现的条件是当T的某一个长度为 ⌊d/2⌋ 的子串是S的一个子串。(子串是在原串中连续出现的一段字符串)。 现在给定一个原串s,另外给出x,y,他们都只包含数字字符,问区间[x,y]中在s中半现的数字有多少个。经典套路先转化为补集问题。 将S所有长度为d/2的串弄个AC自动机,然后做数位DP,f[i,j]表示做到第i位匹配到状态j。 匹配成功
2016-12-21 20:35:53 559
原创 [51nod 1203]JZPLCM
题目大意求区间lcm。带模运算。做法不知道有没有更简单的做法。 最小公倍数是什么意思?一堆数的最小公倍数,就是对于每一个质数p,这些数每个数中p的次数的最大值k,然后最小公倍数就会包含一个p^k。 p很大时k会很小,p很小时k会很大,这是两个互相制约的因素,因此考虑使用两种算法然后进行平衡结合。 设置阈值B=230(差不多就是√n) 对于所有<=B的质数p都枚举一遍,然后计算出每个数包含多少
2016-12-12 22:24:27 771
原创 [51nod 1527]城堡迷阵
题目描述链接偏序性设num表示一个子树游历完的时间,f表示一个节点连往父亲的边的权值。g表示一颗子树根节点认为是时刻0,游历整个子树的最小t值和。 对于相邻两个游历儿子y和z,交换y和z不会更优的条件(假设这时经过了t的时间): (t+f[y])∗size[y]+g[y]+(t+f[y]∗2+num[y]+f[z])∗size[z]+g[z]<(t+f[z])∗size[z]+g[z]+(t+f
2016-12-12 22:22:26 569
原创 [51nod 1531]树上的博弈
题目描述有一棵n个点的有根树,他有m个叶子结点(叶子结点是那些没有孩子的结点)。边由父亲指向孩子。数字1到m被分配到每一个叶子中。每一个叶子有一个数字,并且每一个数字恰好被分配到一个叶子中。 刚开始的时候根部有一个棋子。两个玩家轮流移动棋子,每一步都会将这个棋子向他的某一个孩子移动;如果玩家不能再移动棋子了,那么游戏结束。游戏的结果就是棋子所在叶子上面的数字。游戏的先手想要这个数字最大化,而后手想
2016-12-12 22:16:16 1249
原创 [51nod 1594]Gcd and Phi
题目大意求所有(i,j)满足1<=i<=n和1<=j<=n,phi(i)和phi(j)的gcd的欧拉函数值和。数论题挺简单的。 枚举gcd然后莫比乌斯反演一波。 接下来的式子中需要用到的均能够进行n log n预处理。 式子不太想写了, 可以看看代码。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) f
2016-12-12 22:13:32 699
原创 [51nod 1223]分数等式的数量
题目大意有这样一个分数等式:1/X + 1/Y = 1/N,(X,Y,N > 0)。给出L,求有多少满足X < Y <= L的等式。 例如:L = 12,满足条件的等式有3个,分别是:1/3 + 1/6 = 1/2, 1/4 + 1/12 = 1/3, 1/6 + 1/12 = 1/4。数论题大师张俊不教我我不会。。 其实就是求多少对(a,b)满足a+b|ab 设d=(a,b),a1*d=a,
2016-12-12 22:10:45 711
原创 [51nod 1294]修改数组
题目描述给出一个整数数组A,你可以将任何一个数修改为任意一个正整数,最终使得整个数组是严格递增的且均为正整数。问最少需要修改几个数?做法对于i和j(i<ji<j),因为要严格递增所以a[j]-a[i]>=j-i。 我们把a[i]变成a[i]-i,在新数组上做最长不下降序列表示最多可以不修改几个数。 由于还要求是正整数,我们可以在数组最前面引进一个0,并要求这个0一定不能修改即可。#include
2016-12-12 22:00:06 478
原创 [51nod 1309]Value of all Permutations
题目大意长度为N的整数数组A,有Q个查询,每个查询包含一个数M,对A的所有不同排列,执行find函数(需用到查询中的M),你来计算find函数的返回值的和。由于结果很大,输出Mod 1000000007的结果。find(int permutation_A[], int M){ x = Length(permutation_A) sum = 0 for(i = 0; i <
2016-12-09 22:44:44 425
原创 [51nod 1375]再选数
题目描述从前有n个正整数,我们令它为a[1]到a[n]。现在要从选出恰好k个数(如果k=-1则为选任意个数,但是至少选一个),要求这些数的最大公约数是1,问有多少种方案? 答案可能很大,模998,244,353输出。搞一发可以设f[x]表示选出恰好k个数gcd为x的方案数。 设g[x]表示选出恰好k个数gcd为x的倍数。 于是就可以莫比乌斯反演一发。 求f[1]即可。#include<cst
2016-12-08 17:34:34 478
原创 [51nod 1430]奇偶游戏
题目描述有n个城市,第i个城市有ai个人。Daenerys和Stannis是两个恶魔。他们在玩一个游戏,他们轮流去破坏城市。每一轮破坏一个城市并杀光里面所有的人。直到剩下k个城市为止。 如果最后剩下的总人数是偶数那么Daenerys获得胜利,否则Stannis获得胜利。 现在给定一个局面,要求你来判断一下谁会赢,Stannis先出手。结论设有a个奇数城,b个偶数城。 如果后手的操作步数能使得奇
2016-12-08 17:31:45 383
原创 告别
题目大意一个n的排列,每次可以选择三个不同位置(这三个位置有序,(2,1,3)与(1,2,3)不同),然后对它们进行一次轮换。 只能操作m次,某一次操作过后当前排列变成了目标排列则停止操作。 每次均等概率选择三个有序位置进行操作。 在模意义下求m次操作内变成目标排列的概率。设状态首先可以扭转初始排列和目标排列,使得目标排列变成有序的(就是变成1,2,3……n) 我们知道可以用置换来表示一个排
2016-12-06 17:03:07 411
原创 幻想
题目描述做容易归纳出Si就是i在k进制数下各数位上的数的和再模k。 证明很简单。 我们只需要维护k进制分解即可。 用一个数组维护,每次把最低位+1,然后考虑进位。 均摊分析这是线性的: 设势函数为k-1的数量。 每次若进位了s个,那么势函数减少了s,并可能增加1,实际消耗时间为s+1,因此Ai<=s+1-s+1=2 均摊复杂度为O(1) 优化常数使用模优化即可#include<cst
2016-12-06 16:54:55 292
原创 [51nod 1304]字符串的相似度
题目描述我们定义2个字符串的相似度等于两个串的相同前缀的长度。例如 “abc” 同 “abd” 的相似度为2,”aaa” 同 “aaab” 的相似度为3。 给出一个字符串S,计算S同他所有后缀的相似度之和。例如:S = “ababaa”,所有后缀为:ababaa 6 babaa 0 abaa 3 baa 0 aa 1 a 1S同所有后缀的相似度的和 = 6 + 0 + 3 + 0 + 1
2016-12-06 16:50:45 574
原创 [51nod1301]集合异或和
题目描述已知两个整数N与M,你需要构造两个整数集合X与Y,且需要满足以下要求: (1)对所有的xi∈X,满足1<=xi<=N;对所有的yj∈Y,满足1<=yj<=M; (X与Y可以为空集) (2)X∩Y=Φ;(但不要求集合X与Y的元素个数,只要两者没有交集即可)不妨设构造后的集合X含有n个元素,而集合Y有m个元素,令 A=x1 xor x2 xor x3 xor … xor xn, B=y1
2016-12-06 16:49:16 1918
原创 [bzoj3878]奇怪的计算器
题目大意一个计算器,数值范围在[l,r]。 有n条指令,每条指令: 1、把当前数x变成x+a 2、把当前数x变成x-a 3、把当前数x变成x*a 4、若一开始输入的数为t,把当前数x变成x+a*t 每次执行一条指令后,当前数需要对l取max,然后对r取min。 现在q次询问,问往计算器输入x得到什么?平衡树维护函数我们尝试建立一个自变量为输入的初始值因变量为执行完若干指令后的值得一个函
2016-12-06 16:42:56 909
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人