随笔分类 - ACM-思维
摘要:题意: 给出一棵树,两种操作: 1.求出a到b的距离; 2.修改某一条边的权值。 思路: 可以用树链刨分(我不会 首先,求a到b的距离,因为有很多组询问,所以必须得用lca解决 ans = dis[a] + dis[b] - 2 * dis[lca(a,b)] dis是这个点到根的距离 修改某一条边
阅读全文
摘要:题意: 小Q非常喜欢数学,但是他的口算能力非常弱。因此他找到了小T,给了小T一个长度为nn的正整数序列a1,a2,...,ana1,a2,...,an,要求小T抛出mm个问题以训练他的口算能力。 每个问题给出三个正整数l,r,dl,r,d,小Q需要通过口算快速判断al×al+1×...×ar−1×a
阅读全文
摘要:题意: 有一棵树,这棵树上有很多果子,一开始每个果子都在,给出下面两种操作: 1.C x,改变果子x的状态,如果有,那么久摘下来;没有,就变为有; 2.Q x,问在x上面的(包括x)有多少个果子。 思路: 多叉树,朴素的更新方法就是从叶子到根的路径上的点的值全部更新,但是这样每更新的复杂度是O(n)
阅读全文
摘要:题意: 若干头牛排列在一条坐标轴上(位置都不同),每头牛都有一个音量vi,任意两头牛i,j之间要交流,他们发出的音量就是max(vi,vj) * 它们的距离。 问n / (n-1)对牛交流的音量的总和。 思路: 先无脑n ^ 2了一波,果然tle了,是我太naive。 首先把牛按照音量递增排序,对于
阅读全文
摘要:题意: 给出一个矩阵,有两种操作: 1.翻转给定的子矩阵; 2.查询a[i][j]的值。 思路: 树状数组是从小到大更新的。 这个题用二维树状数组可以解决,假设是一维树状数组, 0 0 0 0 0 0 我们把第三个到第四个翻转,变成 0 0 1 1 -1 0 sum[1] = 0,sum[2] =
阅读全文
摘要:题意: 输入若干个区间,对于一个区间(a,b),如果存在一个区间(x,y)满足x <= a && y >= b && y - x > b - a,那么就说(x,y)比(a,b)大。 求比每一个区间大的区间有多少。 思路: 树状数组,这题最关键的其实是有重复的区间。 首先把区间按照起点升序排序,如果起
阅读全文
摘要:题意: 把一个数组分成若干组,保证每组的size >= k并且一组中任意两个数字的差的绝对值 <= d,问存不存在这样的分法。 思路: 线性dp。 用dp[i]表示前i个数是否有分法。 设j为满足a[i] - a[j] <= d的最小的a[j]的下标,那么dp[i]就可以从dp[j-1] ~ dp[
阅读全文
摘要:题意: 有n * k块木板,每个木桶由k木板组成,每个木桶的容量定义为它最短的那块木板的长度。 任意两个木桶的容量v1,v2,满足|v1-v2| <= d。 问n个木桶容量的最大的和为多少,或者说明不可能做出这样的n个木桶。 思路: 贪心 要满足|v1-v2| <= d,那么就要满足最大的木桶容量和
阅读全文
摘要:题意: 给出一个数组,删除大于等于k的数字,使得其满足以下条件: 1.剩余的连续的段,每一段的长度相等; 2.在满足第一个条件的情况下,段数尽可能多; 3.在满足前两个条件的情况下,k取最小的。 求k。 思路: 一开始整个数组可以看成完整的一段,这是对应的k是最大的数字 + 1。 用一个set sd
阅读全文
摘要:题意: 给出一个数组,每次询问区间[l,r]的gcd是多少,并且这个数组有多少个连续的区间的gcd和[l,r]的gcd相等。 思路: 区间询问RMQ问题,可以用st表解决,预处理的时间是O(nlogn),一次查询的时间是O(logn)。 关键是第二个问题,如何找出这些区间的数量。 如果固定区间的左端
阅读全文
摘要:题意: 给出一棵树,问最多去掉多少条边之后,剩下的连通分量的size都是偶数。 思路: 如果本来就是奇数个点,那么无论去掉多少条边都不可能成立的。 如果是偶数个点,就进行一次dfs,假设一个点的父亲是u,儿子是v,那么可以去掉(u,v)的条件就是v及其子树有偶数个点,任何一条这样的边都是可以去掉的。
阅读全文
摘要:题意: 定义一个函数f(a): 给出一个数组a,有q个询问,每次询问回答在l到r的区间内,连续子串的f函数的最大值。 思路: 画图,来自codeforces SheepRanger 由此图可知,f(l,r) = f(l,r-1) ^ f(l+1,r),多画图哇! 所以就变成了区间dp,同时维护f(l
阅读全文
摘要:题意: 给出两种操作: 1.添加一个数字x到数组。 2.给出s,x,k,从数组中找出一个数v满足gcd(x,k) % v == 0 && x + v <= s && (x xor v 最大),如果没有,输出-1. 思路: 有两种做法。 第一种,首先用若干个set存因子中有k的数字。 然后每次在set
阅读全文
摘要:题意: 判断一个分数在某一进制下是否为无限小数。 思路: 首先把这个分数约分,然后便是判断。 首先,一个分数是否为无限小数,与分子是无关的,只与分母有关。 然后,再来看看10进制的分数,可化为有限小数的特点,10为分母可以,2为分母可以,16为分母可以,40为分母可以。。。。 总之,其实全部都与2和
阅读全文
摘要:题意: 给出三个字符串,每个字符串长度相同,给出n,要求在n轮内,每一个字符串必须改变一个字符。 问最后哪个字符串中拥有最多相同的字符,即美丽度最大。 思路: 首先,很不容易想到的一点是从a变到a,有两种方式a -> 其它 -> a,或者a -> 其它 -> 其它 -> a,即变2次或者变3次。 变
阅读全文
摘要:题意: 有这样一个问题,给出一个数组,把里面的数字分组,使得每一个组里面的数两两相乘都是完全平方数。 问最少可以分成的组数k是多少。 现在一个人有一个数组,他想知道这个数组的连续子数组中,使得上面的问题答案分别为1到n的数组有多少个。 第一个样例 2 5 5 子数组有[5],[5],[5 5]三个,
阅读全文
摘要:题意: 给出一棵树,要求去掉k个点,使得剩下的还是一棵树,并且要求Σ(2^i)最大,i是剩下的节点的编号。 思路: 要使得剩下的点的2的幂的和最大,那么肯定要保住大的点,这是贪心。 考虑去掉哪些点的话,那么去掉一个点,它相连的子树的点肯定都得去掉,很麻烦。 所以放过来考虑保留哪些点,那么就从大到小考
阅读全文
摘要:题意: 255个像素格子,可以把这个255个分组,每组的大小不能超过k。 给出n个像素,要求每个像素用这组的key代表,并且表示出来的字典序要最小。 思路: 感谢js教本智障。 很自然的会想到贪心,也就是说,每次对当前的数,都要找到最小的可以当它的key的数。 那么这种数只能有两种情况,一种是这个数
阅读全文
摘要:题意: 给出n条路和每条路的困难度ci。一个人初始的能力值为f 这个人每天被随机传送到一条路,如果他的能力值f大于ci,那么它就可以花费ti的时间逃出去,ti与ci的关系是给出的函数关系。 如果他的能力值小于等于ci,那么他的能力值就会增加ci,并且等待第二天再次传送。 问逃出去的期望的天数。 思路
阅读全文
摘要:题意: 有m个人,n个盒子,每个盒子一开始都装了一个奖品。 每一次,一个人从n个盒子里面随机抽出一个,如果里面有奖品,就把奖品拿出来;如果没有,就原封不动放回。 问抽到奖品的个数的期望。 思路: 一开始从人去思考,怎么也推不出来。 每次抽是独立的,如果从礼物去思考的话,每次一个礼物被抽中的概率是1
阅读全文

浙公网安备 33010602011771号