随笔分类 - OJ&Competition——51nod
摘要:【传送门:51nod-1462】 简要题意: 给出一棵n个点的树,每个点有两个权值v,t 有Q个操作,有两种操作: 1.将x到根上的路径上的点的v值都加上d 2.将x到根上的路径上的点的t值都加上每个点的v值*d 最后求出所有点的t值 题解: 显然可以直接树链剖分做,不过lazy标记下放真麻烦,因为
阅读全文
摘要:【传送门:51nod-1363】 简要题意: 给出一个数n,求出1到n的数与n的最小公倍数的和 多组数据 题解: 理所当然推柿子 原题相当于求 先枚举d=gcd(i,n),然后化简得到$$n*\sum_{d|n}\sum_{i=
阅读全文
摘要:【传送门:51nod-1232】 简要题意: 完美数定义:一个数能够被它每一位非零的数整除,例如:11,12,15,但13就不是完美数,因为13不能被3整除 给出T组询问,每组询问输入l,r,输出l到r中有多少个完美数 题解: 首先很容易想到只要当前数被每一位所有非零的数的lcm整除就好了 实际上最
阅读全文
摘要:【传送门:51nod-1253】 简要题意: 给出一棵n个点的树,树上的边要么为黑,要么为红 求出所有的三元组(a,b,c)的数量,满足a到b,b到c,c到a三条路径上分别有至少一条红边 题解: 显然黑边是没用的,那么我们将只有黑边相连的点分成若干的连通块 那么答案就很显然了,容斥一手 就是(所有三
阅读全文
摘要:【传送门:51nod-1611】 简要题意: 给出n个点,编号为1到n,一开始每个点都是不可用状态,要花费c[i]的代价才能使第i个点变为可用点 有m个奖励区间,每个区间输入l,r,d,表示如果l到r的点都为可用状态则获得d的价值 求出最大能获得的价值 题解: 先DP一手,设f[i]为到第i个点能得
阅读全文
摘要:【传送门:51nod-1213】 简要题意: 给出平面直角坐标系中的n个点,求出这n个点的曼哈顿距离构成的完全图的最小生成树的大小 题解: 曼哈顿距离最小生成树的证明 实际上有影响的边远远小于n2,在处理边的时候用树状数组维护就好了 最后对得到的边做kruscal就行了 参考代码:
阅读全文
摘要:【传送门:51nod-1359】 简要题意: 给出n和k,求出最小的x满足 题解: 真是一道有(du)趣(liu)题目 首先我们设X[k-1]为成立的最小的x 那么我们就可以得到$n^{X[k-1]}≡n(m
阅读全文
摘要:【传送门:51nod-1346】 简要题意: 给出一个式子a[i][j]=a[i-1][j]^a[i][j-1] 给出a[1][i],a[i][1](2<=i<=131172) 有n个询问,每个询问输入x,y 求出a[x+131072][y+131072] 题解: 真是一道有趣的题目。。 显然不能直
阅读全文
摘要:【传送门:51nod-1322】 简要题意: 给出n个点的两棵无根树,编号都是从0到n-1 现在每棵树任意选出一条边割断,设第一棵树选出的边为e1,第二棵树选出的边为e2 很显然割断后两棵树各分成了四棵树,设第一棵树分成了A1树和B1树,第二棵树分成了A2树和B2树 设S(a,b)为a树和b树之间相
阅读全文
摘要:【传送门:51nod-1310】 简要题意: 有一个数组S,保证里面的数是从小到大的,而且每一个数的二进制中都没有连续的1,如:1,2,4,5,8... 给出n,然后给出n个位置,求出S数组中n个位置的异或和 题解: 数位DP好题,卡了老久 设f[i]表示2i-1到2i-1中有多少个数是在数组S中的
阅读全文
摘要:【传送门:51nod-1296】 简要题意: 有一个集合,集合中的数为1到n 给出a限制条件,a[i]表示第a[i]位置的数要比相邻位置的数要小 给出b限制条件,b[i]表示第b[i]位置的数要比相邻位置的数要大 求出符合条件的序列个数 题解: DP 设f[i][j]为i位数,最后一位为j的情况数
阅读全文
摘要:【传送门:51nod-1277】 简要题意: 给出一个长度为n的字符串,求出所有前缀的出现的次数*长度的最大值 题解: 一开始想着直接用KMP做,但是发现解决不了一个问题 改用EXKMP求,对于一个p[i],若p[i]不为0,则说明1到p[i]的位置的前缀出现的次数都多了一次 然后用差分搞一下就行了
阅读全文
摘要:【传送门:51nod-1275】 简要题意: 给出一个有n个数的序列,求出有多少个子段满足子段内最大值与最小值的差小于等于k 题解: 单调队列做 j表示往右最长能覆盖到的那个数,用两个单调队列来维护j的范围,一个递增,一个递减 然后对于每个i,j的取值都可能不同,但是随着i增大,j不可能减小,所以每
阅读全文
摘要:【传送门:51nod-1273】 简要题意: 给出一棵树,点数为n,现在你有一个旅行计划,从k城市出发,每天前往一个没去过的城市,并且旅途中经过的没有去过的城市尽可能的多(如果有2条路线,经过的没有去过的城市同样多,优先考虑编号最小的城市),直到所有城市都去过 求出每天旅行到达的城市的编号 题解:
阅读全文
摘要:【传送门:51nod-1259】 简要题意: 将n分成若干个整数相加,求出方案数 题解: DP 和上一题不同,分成的整数可以相等,那么就不能用上一题的DP直接做,但可以利用它的思想 我们将n分成(1,sqrt(n))和(sqrt(n)+1,n)两部分来处理 首先对于第一部分,我们直接暴力背包求出s1
阅读全文
摘要:【传送门:51nod-1257】 简要题意: 给出n个物品,每个物品有它的体积和价值,要求选出k个物品,使得单位体积价值最大,求出最大单位体积价值 题解: 01分数规划裸题 直接01分数规划,然后对于true的情况就顺便记录一下选出来的物品的体积和,价值和就行了 想着没写过01分数规划的博客,就顺便
阅读全文
摘要:【传送门:51nod-1201】 简要题意: 给出一个整数n,将N分为若干个不同整数的和,求有多少种不同的划分方式 题解: DP 设f[i][j]表示用i个数组成j的方案数,因为n<=50000,而且划分出来的数要不同,所以最多只能分成320(还要小一点)个数的和,所以i最大为320 转移=f[i]
阅读全文
摘要:【传送门:51nod-1131】 简要题意: 给出A,B,表示有一个区间为A到B 给出X,Y,表示有一个区间为X到Y 求出X到Y中能够被A到B中的数(可重复)相加得到的不同的数的个数 题解: 乱搞题,暴力显然不行,但是我们会发现l到r中的数能被表示出来,那么k*l到k*r的数也能被表示出来(k为常数
阅读全文
摘要:【传送门:51nod-1526】 简要题意: 给出n个真名和笔名,都是字符串 要求n个真名和笔名一一匹配,一个真名和一个笔名所带来的价值是这两个字符串的最长公共前缀 题解: 直接将真名和笔名插进字典树里面 d1[i]表示真名在字典树的的第i个点被经过的次数,d2[i]表示笔名在字典树在第i个点经过的
阅读全文