08 2020 档案
摘要:今天比赛的题比较难,我们队只通过了T1,419名。 比赛开始后,我们队去看T1,刚开始我提出了一个思路:贪心,把深度最大的点与根连接,然后计算总的次数。思路出来后,队友们让我试一发,我很快写完后,交了,结果WA,又改了几次,结果还是WA。这时候,我好像意识到了贪心好像不行,于是我又去想树形dp,方程
阅读全文
摘要:题意:有两个数组a和b,可以随意调换数组中的元素的顺序,令 c[ i ] = a[ i ] ^ b[ i ],使c的字典序最小。 思路:每个数按二进制从高位到低位看作一个字符串,对a和b数组分别建一棵01字典树,并记录每个结点出现的次数。然后同时遍历这两棵字典树,优先走当前位相同的(0和0,1和1)
阅读全文
摘要:题意:给定p和x,求最小的b,使 a≡bx(mod p)。 思路:先把式子进行转化: a≡bx(mod p) a=bx - pc ∵ 0 < a < b ∴ 0 < bx - pc < b 即 $\frac{p}{x}$ $\leq$ $\frac{b}{a}$ < $\frac{p}{x-1}$
阅读全文
摘要:题意:给定一棵树,初始边权为零,对其进行以下操作: 1. 把树上a到b的路径上的边权:0变为1,1变为0。 2. 与树上a到b的路径相邻的边(只有一个公共点),把它们的边权:0变为1,1变为0。 3. 查询a到b的路径上的边权和。 思路: 操作1用普通的重链剖分就可以解决。 对于操作2,可以看出,在
阅读全文
摘要:树链剖分基本操作: 1. 修改第i条边的权值。 2. 对树上一条路径的权值取反(正变负,负变正)。 3. 查询树上一条路径的权值的最大值。 因为要取反,所以要同时维护最大值和最小值。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorith
阅读全文
摘要:动态树的基本操作: 1. 添边、删边。 2. 修改一棵树一条链的权值。 3. 给一棵树一条链的权值加上一个数。 4. 查询一棵树一条链上的点,第二大权值、权值第二大点的个数。 1 #include<bits/stdc++.h> 2 #define lc c[x][0] 3 #define rc c[
阅读全文
摘要:首先预处理出以每条边i作为左端点,在最短的区间内能形成环的最小右端点,标记为 Ri,如果不存在这样的右端点(即从当前到结尾所有边都不能组成环), 则让 Ri = m + 1。 用动态树来删边、加边和判环。尽量拓展右端点,直到发现环,然后就删掉左端点所在的边并移动左端点(有点像单调队列),不断重复这个
阅读全文
摘要:和往常一样,我们队12点之前吃完午饭,便开始准备接下来的比赛了。 这场的题的难度应该说不算太难(毕竟有AK的),然而我们还是太菜了,只通过了4道题,290名。 刚开始,队友lwj便看到了T3是个签到题,和我们说了题意后,我们便想到:判断点B在向量AC的左侧还是右侧即可。于是很快遍过了,10分钟1A。
阅读全文
摘要:题意:给一个数组a,每次询问,给定L, R, p, K,求[ L , R ] 中的数与p做差的绝对值的第k小。 思路:对数组a建立主席树(不用离散化),对于每次询问,二分答案,如果 [ L , R ] 区间中的 [ p - mid , p + mid ] 范围内的数大于K,则说明二分的答案偏大,需要
阅读全文
摘要:T1001 Road To The 3rd Building 总的方案数有 n(n+1)/2 种。然后考虑每种方案的贡献: 设s[i]为前缀和,Ans是总的贡献,ans[i]是中间过程的累加和。 ans[i] = s[n-i+1] - s[i-1] + ans[i-1] Ans= $\sum_{i=
阅读全文
摘要:T1007 Game 如果先手初始点在距离最远的点对上,那么先手必胜,据此,可以推广到距离次远的点对,距离第三远的点对,先手都是必胜的。所以点数是偶数时先手必胜,点数是奇数时先手如果在:除距离最长、距离次长、距离第三长...剩下的最后一个点上,那么先手必败,否则先手必胜。 1 #include<bi
阅读全文
摘要:昨天,我们队约好在12点打第七场多校联赛。12点之前,我们队都吃好午饭,准备接下来的比赛了。 比赛开始后,我们开始看一些题目比较短的题,今天的题比较难,直到10分钟后才有队伍AC一题,T9,于是我们队迅速去看该题,刘队长思路很快,马上想出思路和我们交流,经过商量,我们觉得思路是没问题的,只是程序比较
阅读全文

浙公网安备 33010602011771号