multiplication sorting 1861d cf
[CF403E]Two Rooted Trees
Two Rooted Trees 题面翻译 题目描述 你有两棵有根树,每棵树都有 \(n\) 个结点。不妨将这两棵树上的点都用 \(1\) 到 \(n\) 之间的整数编号。每棵树的根结点都是 \(1\)。第一棵树上的边都是蓝色,第二课树上的边都是红色。我们也称第一棵树是蓝色的,第二棵树是红色的。 对 ......
CF1889D
题意 给定\(n\)个栈,栈的大小分别为\(k_i\),每个栈内元素\(\in[1,n]\),记从第\(i\)个栈开始的答案为\(ans_i\),流程:若栈\(i\)为空,答案为\(i\);否则弹出栈顶元素\(x\),并前往栈\(x\),继续刚才的操作。 \(n\le 10^5,\sum k_i\l ......
CF1842H
传送门 description 见洛谷翻译 solution 考虑分析一下不等式 \(x_i+x_j\leq 1\)。 如果 \(x_i,x_j\leq 0.5\),一定成立; 如果 \(x_i,x_j>0.5\),一定不成立; 如果 \(x_i,x_j\) 中一个 \(>0.5\),一个 \(\l ......
CF1800-1900
CF1490G Old Floppy Drive 首先判断是否可以在第一圈就符合题意,记录前缀和 \(sum\) 和 \(mx\) 数组,其中 \(mx_{i}\) 为 \(sum\) 从起点到 i 的最大值,即 \(mx_{i}=\max(mx_{i-1},sum_{i})\)。 显然如果在第一圈 ......
cf353D. Queue(整体考虑转移)
D. Queue f[i]表示第i个F需要多少时间才能让所有的M都移到她后面,那么我们考虑转移,分为两种情况。 第i个F和第i-1个F挨着,那么显然f[i]=f[i-1]+1 假如中间隔着一些M, 可以分为两种情况,假如i可以在i-1完成之前追上它,那么就是f[i-1]+1,否则就说明 i一直在进行 ......
cf41D. Pawn(将余数设计到dp状态中)
D. Pawn 感觉这种dp套路似乎非常常见,我们可以设 f[i][j][x]表示走到(i,j),当前的值为f[i][j][x]*k+x ,也就是我们将余数x作为放在状态中。 #include<cstdio> #include<algorithm> #include<cstring> #includ ......
CF1854C
传送门 description 给定正整数 \(n,m\) 和集合 \(S\),满足 \(S\) 中元素互不相同且都是小于等于 \(m\) 的正整数。每次进行如下操作 从集合 \(S\) 中随机选取一个数记作 \(x\) 从 \(S\) 中删去 \(x\) 如果 \(x+1\leq m\) 且 \( ......
CF1889D. Game of Stacks
啊啊啊每次补完题都感觉这题我场上应该是能想出来的啊! 考虑简化问题:若每个栈内只有一个元素,how。 此时我们发现所有栈之间构成了一个内向基环树。且环是没有用的,因为我们在环上走一圈之后仍然会回到原点。所以不妨把所有环边删除,此时每棵树的答案即为树根。 而对于原问题,同理,我们可以考虑不断找环,每找 ......
CF1889C2. Doremy's Drying Plan (Hard Version)
容易想到 dp:设 \(dp_{i,p}\) 表示前 \(i\) 天,强制第 \(i\) 天 dry,并且一共消除了 \(p\) 个区间的答案。 转移时可以考虑枚举前面的决策 \(j\),此时有转移方程: \[dp_{i,p}=\max(dp_{j,p-w})+1 \]其中 \(w\) 为满足 \( ......
CF1889A. Qingshan Loves Strings 2
不妨考虑什么时候会无解! 显然当原序列 \(0,1\) 数量不同,或者序列总长为奇数时会无解! 否则我们设 \(l=1,r=n\)!开始回文配对! 如果配上了就直接删掉!并把左右端点向内移动! 如果两者都是 \(0\),就在末尾加上 \(01\)!都是 \(1\) 就加最前面! 以在末尾加入举例!此 ......
CF1889B. Doremy's Connecting Plan
一开始不会先跳 C 了!差点满盘皆输! 设 \(i<j\),则 \(i,j\) 合并可以看作 \(a_i\leftarrow a_i+a_j\) 后删掉 \(j\)!此时和初始局面本质相同!所以不妨先只看初始局面! 不等式右侧和下标有关!显然若右侧 \(i,j\) 中只要有一个是 \(1\),就会让 ......
『做题记录』[CF1601F]Two Sorts
[CF1601F]Two Sorts link:https://codeforces.com/problemset/problem/1601/F Description 有一个数列 \(\{a_1, a_2, \ldots, a_n\}\) 是一个 \(1 \sim n\) 的排列,且所有的数都按照 ......
CF1592F Alice and Recoloring
CF1592F1 Alice and Recoloring 1 CF1592F2 Alice and Recoloring 2 Part1 很容易发现,其实二和三操作是没有用的. 对于二操作,可以用一操作进行类似于求二维前缀和的方式实现,需要进行一操作至多 \(2\) 次,花费为 \(1+1=2\) ......
#链表#CF706E Working routine
题目 给出一个 \(n*m\) 的矩阵,每次交换两个等大的矩阵,输出 \(q\) 次操作后的矩阵 分析 维护向右和向下的指针,考虑最后输出只需要从每行的头指针向右跳, 那么修改实际上是将矩阵左边一列、上面一行、最后一行和最后一列向右下指针交换 时间复杂度 \(O((n+m)Q)\) 代码 #incl ......
[CF283E] Cow Tennis Tournamsan
CF283E 答案即为 \(\binom{n}{3}\) 减去不合法环数。 一个三元环中最多1个点出度为2,所以出度为 x 的点会造成 \(\binom{x}{2}\) 个不合法的环。 \(\Omicron(nm)\) 的做法就是枚举 i,判断 i 与 n 个点连边是否反向(0,1表示)。 然后可以 ......
CF1890D Doremy's Connecting Plan
Problem - 1890D - Codeforces 这个式子左边是加法,右边是乘法,很不好算 但其实是降智题,不过同时也是我不擅长的找性质 因为式子左边是加法而不是乘法,因此像类似于并查集那样求出当前每个联通块内 \(\sum a_i\) 等价于固定一个点从这个点的联通块向外扩展。 \(i\) ......
「CF715E」Complete the Permutations
\(\text{「CF715E」Complete the Permutations}\) \(\text{Link}\) \(\text{Describe}\) 给定长为 \(n\) 的且部分确定的置换 \(p,q\)。定义 \(p,q\) 距离为通过交换 \(p\) 任意两项变为 \(q\) 的最 ......
#期望dp#CF1810G The Maximum Prefix
洛谷题面 CF1810G 分析 考虑最大前缀和满足两个条件,就是所有前缀和都不超过,以及一定有一个等于。 那么就要保证它能达到最大值且一直不能高于它 设 \(dp[i][j][0/1]\) 表示前 \(i\) 个数离达到最大值还需要 \(j\) 且未/已经达到过最大值。 初始化就是 \(dp[0][ ......
CF1612
A Distance 直接枚举C点x坐标暴力判断 #include<bits/stdc++.h> using namespace std; int xa,ya,xb,yb; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.t ......
CF762F Tree nesting
来一点更清楚的、实现方面的东西。 做法同 这篇,他的实现很优美但略微繁琐了些。 枚举 \(T\) 的形态,发现这个匹配不过是把每个 \(T\) 中当前点的儿子塞进一个 \(S\) 中当前点的儿子内。于是 \(f_{u, v}\) 表示 \(S\) 中 \(u\) 匹配 \(T\) 中 \(v\) 且 ......
CF777E题解
分析 看到这个题就想到了二维偏序。 你们很自然地,以 \(b\) 为第一关键字降序排序,当有若干个片 \(b\) 相等时,我们发现由于 \(a < b\),所以排到最后的片一定能把这些 \(b\) 相等的片都统计上,而前面的片能否统计是依赖于 \(b\),所以考虑如何让后面的片更好统计,显然 \(a ......
[CF521D] Shop
CF512D 聪明的想法。 首先对于同一个 i 必定保留最大的赋值操作,并且顺序为赋值-加-乘。 并且我们最终答案是所有元素的乘,那么乘操作对答案作贡献很好写就是乘的值。 那么我们想办法把余下两种操作用乘操作表示。 把大于 \(va_i\) 的赋值操作变成加操作,因为乘之前对于某个 i 一定加的越多 ......
CF1746F Kazaee
考虑出现次数都是 \(k\) 的倍数存在必要条件:区间总和为 \(k\) 的倍数。 如果给每个正整数 \(i\) 都赋随机数 \(a_i\) 并对每次查询求区间和,错误的概率大概为 \(\frac{1}{k}\)。 跑 \(30\sim 40\) 次即可,时间复杂度为 \(O(Tn\log n)\) ......
CF375E Red and Black Tree
看错题看成只能交换相邻节点颜色了/fn 每次操作交换两个节点颜色,可以转化为统计最终合法颜色序列相比开始,最少有多少个红点变成黑点。 可以考虑一个类似树形 dp 的过程,对于每个节点我们钦定下它会被哪个节点“笼罩”,同时由于黑点数量有限,我们还需要记录下子树内已经用了多少个黑点。 设“笼罩”节点 \ ......
CF1553I
传送门 description 对于一个 \(1\) 到 \(n\) 的排列 \(p\),第 \(i\) 个位置的权值是 \(p\) 中数字 \(i\),所在的连续自然数段的长度(可以递增,也可以递减)。现在给定一个数组 \(a\),求第 \(i\) 个位置权值为 \(a_i\) 的排列 \(p\) ......
#ST表#CF1879F Last Man Standing
洛谷题面 CF1879F 分析 当 \(x\) 大于最大值时一定可以被约化为等于的情况,考虑枚举 \(x\), 通过枚举倍数的方式可以知道存在若干段区间消耗同一精神状态的次数是相同的,那么区别就是其精神状态的差值。 那么可以用ST表维护精神状态次数的最大值和次大值,然后枚举倍数求出对于单个 \(x\ ......
CF1883E Look Back
思路 首先,对于 \(a_i\) 他必须得不小于最后的 \(a_{i-1}\),所以每个数乘的次数都是固定的。 如果暴力去乘 \(2\) 直到不小于为止,将会超时,所以考虑使用其他的方法进行优化。 因为前后两个数可以同时乘以 \(2\),相对比值不会变化,所以我们可以考虑对于最开始的 \(a_{i- ......
CF练习题16 (毒瘤数据结构)
Lomsat gelral 把树拍成一条链,询问子树等于询问区间。 这样一看这道题就非常莫队。 但是有要求个数最多的颜色的编号,我们可以用线段树动态维护颜色的最大值。 这样,一个无脑莫队线段树的暴力就做出来了。 int n,a[N]; int dfn[N],nfd[N],cnt; int b[N], ......
CF1073G Yet Another LCP Problem
一道 *2600 调了一年,代码细节是有点粪了,但自己菜也是挺菜的。/oh/oh 考虑容斥,令 \(f(A)=\sum\limits_{i,j\in A}\operatorname{lcp}(i,j)\),那么答案就是 \(f(A\cup B)-f(A)-f(B)\)(这里的并表示可重集合并)。 令 ......
CF364D Ghd
做法大同小异,但不知道为啥我跑这么慢而且还容易被卡。/kk 由于这题看上去和概率一点关系都没有并且 CF 标签中有 probabilities,不难想到随机。 由于答案子集大小至少为 \(n\) 的一半,我们每次随机一个数 \(a_i\),它在最终答案集合里的概率为 \(\frac{1}{2}\)。 ......