随笔分类 - codeforces/Gym
摘要:那个人第一步肯定要么能向下走,要么能向右走。于是一定可以判断出上下是否对调,或者左右是否对调。 然后他往这个方向再走一走就能发现一定可以再往旁边走,此时就可以判断出另一个方向是否对调。 都判断出来以后,跑个spfa或者bfs就行了。 细节较多……有一些边界情况需要处理。比如终点在第一行或者第一列的情
阅读全文
摘要:划分那个序列,没必要完全覆盖原序列。对于划分出来的每个序列,对于某个值v,要么全都在该序列,要么全都不在该序列。 一个序列的价值是所有不同的值的异或和。整个的价值是所有划分出来的序列的价值之和。 求整个的价值的最大值 f(i)表示最后一个划分序列的右端点为i时,1~i的答案。 f(i)=max{ma
阅读全文
摘要:考试的时候想的是,将所有的完全子图缩起来,然后如果剩下的是一条链,依次对其进行标号即可。 看了官方题解,发现完全子图这个条件太强了,缩点的条件仅仅需要保证原本两个点的“邻接表”相同即可。(注意这里的“邻接表”需要把其自身也放进去) 自己构造一下,发现这个比较容易理解。 被缩在一起的点的标号相同。如果
阅读全文
摘要:显然将扩张按从大到小排序之后,只有不超过前34个有效。 d[i][j]表示使用前i个扩张,当length为j时,所能得到的最大的width是多少。 然后用二重循环更新即可, d[i][j*A[i]]=max(d[i][j*A[i]],d[i-1][j]); d[i][j]=max(d[i][j],d
阅读全文
摘要:考虑两个人,先把各自的集合排个序,丢掉一半,因为比较劣的那一半一定用不到。 然后贪心地放,只有两种决策,要么把一个最优的放在开头,要么把一个最劣的放在结尾。 如果我的最优的比对方所有的都劣(或等于),我就把我最劣的往结尾放。否则我把我最优的往开头放。 用multiset维护两人的集合即可。
阅读全文
摘要:分几种情况讨论: (1)仅用C或D买两个 ①买两个代价相同的(实际不同)(排个序) ②买两个代价不同的(因为买两个代价相同的情况已经考虑过了,所以此时对于同一个代价,只需要保存美丽度最高的喷泉即可)(预处理b[i],表示代价小于等于i的物品中,美丽度最大的是多少。为了防止重复购买,枚举其中一个,然后
阅读全文
摘要:对那个树进行dfs,在动态维护那个当前的冰激凌集合的时候,显然某种冰激凌仅会进出集合各一次(因为在树上形成连通块)。 于是显然可以对当前的冰激凌集合贪心染色。暴力去维护即可。具体实现看代码。map不必要。
阅读全文
摘要:最后肯定是bbbb...aaaa...这样。 你每进行一系列替换操作,相当于把一个a移动到右侧。 会增加一些b的数量……然后你统计一下就行。式子很简单。 喵喵喵,我分段统计的,用了等比数列……感觉智障。一个a一个a地统计答案即可。
阅读全文
摘要:1 2 3 4 5 6 7 4-5-3-6-2-7-1 答案是(n-1)/2
阅读全文
摘要:如果一开始就满足题意,不用变换。 否则,如果对一对ai,ai+1用此变换,设新的gcd为d,则有(ai - ai+1)mod d = 0,(ai + ai+1)mod d = 0 变化一下就是2 ai mod d = 0 2 ai+1 mod d = 0 也就是说,用两次变换之后,gcd至少扩大2倍
阅读全文
摘要:考虑这个二元组中有一者是自环,则必然合法。 考虑这两条边都不是自环,如果它们不相邻,则不合法,否则合法。 坑的情况是,如果它是一张完整的图+一些离散的点,则会有解,不要因为图不连通,就误判成无解。
阅读全文
摘要:考虑枚举每个子串开头的位置,然后答案转化成询问这个位置之后 哪个位置的前缀和 - 这位置的前缀和 最大(当然是已经把绝对值和正负的情况处理好了,可以发现按奇偶,这个序列只有两种情况),只需要预处理这两个序列的前缀和,以及这两个前缀和序列的后缀max即可。
阅读全文
摘要:模拟一下那个过程,直到绝对值超过l,或者出现循环为止。 如果结束之后,绝对值是超过l的,就输出当前写在黑板上的数量。 如果出现循环,则如果写在黑板上的数量非零,则输出inf(注意!如果陷入的循环是一个全部被禁止的循环,但是黑板上有输出的值,则还是应该输出黑板上的值的数量。这种情况用循环再向后扫几项判
阅读全文
摘要:贪心地一个一个尽可能往口袋里放,容易发现和顺序无关。
阅读全文
摘要:扩欧,a+bx=c+dx,输出x>=0且y>=0,且a+bx最小的解。 要注意不能只保证x非负,还得看看能否保证y也非负。
阅读全文
摘要:我们要统计的答案是sigma([L/K]),L为路径的长度,中括号表示上取整。 [L/K]化简一下就是(L+f(L,K))/K,f(L,K)表示长度为L的路径要想达到K的整数倍,还要加上多少。 于是,我们现在只需要统计sigma((L+f(L,K))),最后除以K即可。 统计sigma(L)时,我们
阅读全文
摘要:统计树中长度为K的路径条数。 用f[u][k]表示从u结点的子树中出发,终止于u结点的长度为k的路径条数。 边dp边统计答案。为了防止重复统计,在枚举子节点的时候,先将该子节点和当前u结点(和前面已经统计过的子节点)的dp值统计到ans以后, 再把该子节点的dp值加到u结点的dp值中去。 这样,我们
阅读全文
摘要:如果某个位置i是Y,直接直到i+m-1为止填上新的数字。 如果是N,直接把a[i+m-1]填和a[i]相同即可,这样不影响其他段的答案。 当然如果前面没有过Y的话,都填上0就行了。
阅读全文
摘要:http://codeforces.com/blog/entry/50996 官方题解讲得很明白,在这里我复述一下。 枚举每个左括号,考虑计算一定包含其的简单括号序列的个数,只考虑其及其左侧的左括号,以及其右侧的右括号。最后答案就是其之和。 可以将其提取出来这样((((((())),红色为当前左括号
阅读全文
摘要:当m>=n时,显然答案是n; 若m<n,在第m天之后,每天粮仓减少的量会形成等差数列,只需要二分到底在第几天,粮仓第一次下降到0即可。 若直接解不等式,可能会有误差,需要在答案旁边扫一下。 注意二分上界的确定,不能太小也不能太大。
阅读全文

浙公网安备 33010602011771号
