- 博客(104)
- 收藏
- 关注
原创 cf1856d - More Wrong
一个数是最大的充要条件是 , 它和前面的逆序对为 0 , 和后面的逆序对为长度。但是代价远远超出限制 , 想办法优化 , 而求最大值是一个 RMQ 模型。所以可以得到一个最基础的算法 , 对每一个数四次算出前后逆序对数。交互题 , 首先观察交互操作与待求值之间的联系.由上述最大值的充要条件可以得到 , 只要。层进行到第 2 层 , 所以总复杂度为。之间的大小关系 , 就知道了。每一块进行一次向上合并的代价为。考虑复杂度 , 分治过程有。, 那么一层的代价就是。, 分治过程就可以继续。这一段的逆序对个数为。
2023-08-07 11:34:28
307
原创 cf1854b - Earn or Unlock
张卡牌按顺序从上到下摆放 , 初始时第一张已经解锁 , 其他的未解锁 , 每张卡牌上有一个值。下 , 解锁卡片的数量加上获得的点数应该是一个定值 , 这个定值就是前。游戏按轮次进行. 每一轮 , 你需要选定一张解锁的卡牌 , 其值为。复杂度并没有直观的下降 , 但有一点不同了 , dp 的值现在是。) 如果知道了解锁卡片的数量 , 那么就可以算出获得的点数。那一维可以删掉 , 这样就是一个 0/1 背包的形态.这类直接操作有着后效性的题的入手点 : dp .最后 , 如果假设解锁卡片的数量为。
2023-07-30 11:58:25
436
2
原创 CF1719 --- Codeforces Round #814 (Div. 2)
的循环节 , 显然 , 这两段一定有一个大小关系 , 不妨假设前面的一半点的和大于后面一半点的和 , 那么我们只会选择前面的一半 , 也就是在假设下 , 选择从。产生的贡献的最大值 , 这告诉我们如果一个长度的倍数在集合中 , 那么枚举他就没有意义 , 为了简化思路 , 对于长度。, 再观察式子 , 可以发现最后所有的长度的循环一定都是一个完整的最小循环重复若干遍 , 所以对于初始的。, 所以每一次修改的复杂度为循环节长度的集合的大小 , 但是问题出现在。的质因数即可 , 那么循环节长度集合的个数就是。
2022-08-25 02:48:56
397
1
原创 CF1720 --- Codeforces Round #815 (Div. 2)
CF1720 --- Codeforces Round #815 (Div. 2)
2022-08-20 04:06:04
284
原创 CF1657 --- Educational Codeforces Round 125 (Rated for Div. 2)
A. Integer MovesTutorial如果在原点 , 需要 0 步如果距离是整数 , 需要 1 步注意到沿对角线和沿直线移动只需要一步所以最多只需要 2 步Code#include <bits/stdc++.h>using namespace std;std::mt19937 rng(std::random_device{}());typedef long double ld;typedef long long ll;typedef unsigned long
2022-03-26 11:33:50
527
原创 Educational Codeforces Round 118 (Rated for Div. 2)
Educational Codeforces Round 118 (Rated for Div. 2)A模拟 , 显然 ppp 之差大于 10 肯定是 0#include <bits/stdc++.h>using namespace std;std::mt19937 rng(std::random_device{}());typedef long double ld;typedef long long ll;typedef unsigned long long ull;typ
2021-12-03 23:22:28
779
原创 Codeforces Round #756 (Div. 3)
Codeforces 1611A末尾是偶数0第一位是偶数1如果有偶数是2否则是-1#include <bits/stdc++.h>using namespace std;std::mt19937 rng(std::random_device{}());typedef long double ld;typedef long long ll;typedef unsigned long long ull;typedef const int& cint;typedef
2021-11-26 14:43:31
1783
原创 Codeforces 1610D. Not Quite Lee
Codeforces 1610D. Not Quite Lee思路首先容易发现如果 bib_ibi 是奇数,那么它的贡献可以写成 kibik_ib_ikibi 其中 kik_iki 是任意整数如果 bib_ibi 是偶数,那么可以写成 bi2+kibi\cfrac{b_i}{2}+k_ib_i2bi+kibi稍微推一下可以发现,一个序列里只要有一个奇数那么肯定有一种方法变为0奇数和奇数相消取 lcmlcmlcm奇数和偶数相消写成丢番图方程的形式,由裴蜀定理一定有解(两者的 g
2021-11-24 21:59:27
500
原创 Codeforces 1612C. Keshi Is Throwing a Party
Codeforces 1612C. Keshi Is Throwing a Party思路首先容易发现,选择的人数具有单调性,是可以二分的假设最后答案选了 xxx 个人,那么对于一个人有影响的,就只有了他前面选了多少人,因为前面确定了后面就确定了更具体地说,如果第 iii 个人是按顺序的第 kkk 个被选,那么 x−k≤aix-k\leq a_ix−k≤ai 且 k≤bik \leq b_ik≤bi 综合一下可以得到 x−ai≤k≤bix-a_i\leq k\leq b_ix−ai≤k≤bi
2021-11-24 21:58:53
518
原创 第二届辽宁省赛 B 阿强的路
B 阿强的路思路题目中有两个限制,边权最大和点权最大,考虑固定一维将点按权值从大到小排序,每一次,我们只考虑点权小于等于枚举点的的点导出子图的最小生成树,然后在生成树上暴力代码#include <bits/stdc++.h>using namespace std;typedef long double ld;typedef long long ll;typedef unsigned long long ull;typedef const int& cint;typ
2021-10-24 13:40:34
247
原创 CF GYM 103186 B
CF GYM 103186 B思路考虑分解来做。假设已经知道了 c 的选择,那么该怎么确定 a,b 的选择不难发现对 ai−bia_i-b_iai−bi 从大到小排序,前 a 个一定选 aia_iai可以这么想,假设剩余的全选了 b ,那么此时在不改变 c 的选择下 一定选择那些 ai−bia_i-b_iai−bi 最大的地方改成 aia_iai代码#include <bits/stdc++.h>using namespace std;typedef long d
2021-10-22 20:35:16
145
原创 Codeforces 1586E. Moment of Bloom
Codeforces 1586E. Moment of Bloom思路从原图构造任意生成树,在生成树上暴力即可,下证正确性。首先证明,对于树,在操作后清除所有奇数边所需的次数是 sum2\cfrac{sum}{2}2sum ,其中 sumsumsum 代表奇数节点个数因为一次操作最多只能改变两个节点的奇偶性,全为偶数的必要条件为所有节点都为奇数,又由欧拉路径,总存在可行解,证毕然后证明,任意原图的路径选择不会优于生成树上的路径选择原图通过操作后,将得到的奇数边清除的次数下限亦为 sum2\cf
2021-10-18 22:10:47
323
原创 Codeforces 1592F1. Alice and Recoloring 1
Codeforces 1592F1. Alice and Recoloring 1思路首先,容易发现操作二三是无效操作,可以用操作一在更优解下实现现在只考虑操作一四,记为操作 a 和 b可以发现将初始图转化为给定图等价于将给定图转化为初始图,因为对给定图运用将初始图转化为给定图的一系列操作,就可以将它转化为初始图所以,问题变成了,给定一幅含 W 和 B 的图,仅通过 a 和 b 操作将它转化为仅含 W 的图,求最小转化代价考虑一个新数组 C(i,j)C_{(i,j)}C(i,j) 表示 (i,
2021-10-04 16:17:18
381
2
原创 arc126c
arc126c思路首先,有不等式 gcd(a1,a2,...,an)≤min(a1,a2,...,an)\gcd(a_1,a_2,...,a_n) \leq \min(a_1,a_2,...,a_n)gcd(a1,a2,...,an)≤min(a1,a2,...,an)如果 k 足够大,以至于所有的数都加到 max(a1,a2,...,an)\max(a_1,a_2,...,a_n)max(a1,a2,...,an) 后还有剩余,那么此时,每当 n≤kn\leq kn≤k ,就
2021-09-23 21:55:24
237
原创 Codeforces 1562E Rescue Niwen!
Codeforces 1562E Rescue Niwen!思路对于字符串 s1s2s3...sns_1s_2s_3...s_ns1s2s3...sn我们先来考虑一个子集,仅讨论以 s1,s2s_1,s_2s1,s2 两个位置为开头的扩展字符串列中的最长递增子序列,即 s1;...;s1,...,sn;s2;...;s2...sns_1;...;s_1,...,s_n;s_2;...;s_2...s_ns1;...;s1,...,sn;s2;...;s2...sn 中的最长递增
2021-08-27 04:20:35
231
原创 CF1562D Two Hundred Twenty One
CF1562D Two Hundred Twenty One思路以下所有区间和计算时均以点 1 系数为正作为基准结论一:区间和为 0 不用删显然结论二:区间和为奇数删一个举个实际例子,不妨假设 l 到 r 区间和是 5那么一定存在一个点 s,使得 l 到 s 是 2 ,s+1 到 r 是 3这个点一定存在,因为区间长度增加 1 ,区间和的变化的绝对值就是 1不难发现,如果 s+1 对区间和的贡献是 1 的话,删掉它就一定满足条件,即 +2 +1 +2 -> +2 -2既然要从
2021-08-27 01:32:22
243
原创 CF1561C Deep Down Below
CF1561C Deep Down Below思路考虑一种特殊情况,只有一个洞穴,记其怪物属性为 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an不难发现,仅有英雄属性值在进入洞穴前大于 max(ai−i+1)max(a_i-i+1)max(ai−i+1) 时,英雄才能安全通过这个洞穴现在考虑一般情况,对于洞穴 i ,设 di=max(ai,1,ai,2,...,ai,x)d_i=max(a_{i,1},a_{i,2},...,a_{i,x})di=max(a
2021-08-25 03:41:25
247
原创 CF1561E Bottom-Tier Reversals
CF1561E Bottom-Tier Reversals思路首先,可以发现交换不会改变一个数的位置的奇偶性,即一个数交换前后的位置的奇偶性相同所以如果奇数位出现了偶数一定不成立那么先猜测其余情况一定有解,尝试构造一下首先,我们非常想先让最大的数回到自己的位置,这样,以后的翻转就不用考虑最大数那一位然后发现,只有次大的数无法自己回到自己的位置,因为次大的数一定是偶数(保证n是奇数),而翻转序列的长度需要是奇数那么当尝试将次大的数放回自己的位置时,最大的数的位置又发生了变动,这是我们非常不想看到
2021-08-25 03:26:53
194
原创 CF1561D Up the Strip
CF1561D Up the Strip思路对于操作一,是最基础的前缀和优化考虑操作二对于点 i ,我们想知道通过除以某个数,哪个范围可以到它考虑一种情况,除数是 22i,2i+12i,2i+12i,2i+1 可以到,其余都无法通过除以 2 到达点 i进一步发现,对于任意除数 x ,可以到达的范围是 [ix,ix+x−1][ix,ix+x-1][ix,ix+x−1]所以从 n 向 1 转移, 转移时枚举倍数, 维护前缀和复杂度是调和级数代码#include <bits/stdc+
2021-08-25 03:11:41
167
原创 CF1559E Mocha and Stars
CF1559E Mocha and Stars思路观察数据范围,大概 Θ(nmlogm)\Theta(nm\log m)Θ(nmlogm) 是可行的那么有了一个基本的想法, dpi,jdp_{i,j}dpi,j 表示选到了第 i 位,且当前所选数的和是 j 的方法数但是这样最后的 dp 值里面会有 gcd 不为 1 的情况以下默认省略和不大于m考虑容斥原理如果 gcd 不为 1 ,那么它一定是某一个质数的倍数所以减去所有 gcd 为质数倍数的情况,但是这样子我们会将一些 gcd 为特定值
2021-08-24 01:04:30
173
原创 CF1559D2 Mocha and Diana (Hard Version)
CF1559D2 Mocha and Diana (Hard Version)思路以下,两图分别称为 A , B首先,来证明一个贪心策略:有能连的边就连,或者说连边不会影响最大值考虑一种特殊情况,A 只有两个联通块,记为 x 和 y , B 只有两个联通块如果从 x 中选出任意一点都无法连接到 y 中任意一点,那么说明 x 中任意一点和 y 中任意一点在 B 中在一个连通块内这样推得 B 仅有唯一联通块,矛盾所以上述情况一定可以连一条边有一个显然的东西,连一条边会让 A 和 B 的联通块个数
2021-08-24 00:57:27
220
原创 2021-08-24
题目描述9 个机器人,在 3 * 3 的方格里,一开始 9 个机器人分别站在 9 个格子上,每一步机器人可以往临近的一个格子移动或留在原地(同一个格子可以有多个机器人停留),经过 n 步后有多少种不同的走法,使得每个格子上都有 1 机器人停留。由于方法数量巨大,输出 Mod10^9 + 7 的结果。输入输出格式输入格式第一行包含一个整数 n。输出格式输出一行输出走法的数量 Mod 10^9 + 7数据范围对于 40%的数据,1 <= n<= 10;对于 70%的数据,1
2021-08-24 00:51:47
134
原创 ARC112C
arc112c大意略…思路我们不妨假定 did_idi 为先手走到第 iii 个点的人,最优策略下与另一个人获得的硬币差。显然,该博弈为零和博弈,所以,我们要最小化 d1d_1d1 。(注意,首先行动的人可以直接拿走点1上的硬币,所以相当于后手到点 iii )开始讨论。AAA 先手走到 iii ,定义为:如果 iii 上有硬币,那么 AAA 拿不到硬币。如果 iii 上没有硬币,那么 AAA 选择向哪棵子树走。不难发现,如果子树节点数为奇数,那么进去后会就交换先后手。依此,我们将以
2021-08-24 00:46:51
228
原创 CF1452D
Educational Codeforces Round 98 (Rated for Div. 2) D大意有 n+2n+2n+2 个村庄,按从 000 到 n+1n+1n+1 标号。村庄 111 到 nnn 中允许安装灯塔,每个村庄有二分之一的概率被安装(互相独立)。现在,对于一种安装方法,你需要给予每个灯塔能量 p∈N∗p\in N^{*}p∈N∗ 。如果一个位于 iii 的灯塔被赋予了能量 ppp ,那么,所有满足 ∣c−i∣<p|c-i|<p∣c−i∣<p 的标号为 cc
2021-08-24 00:45:25
101
原创 ABC179D
abc179d大意给定 NNN 和 KKK 个互不相交的整数端点区间 [Li,Ri][L_i, R_i][Li,Ri] , 定义 S=∪i[Li,Ri]∩NS = \cup_i[L_i,R_i]\cap\mathbb{N}S=∪i[Li,Ri]∩N 。初始站在台阶1,可以选择 i∈Si\in Si∈S 并走到第 1+i1+i1+i 阶。问,走到第 NNN 阶的方法数有多少种。思路很像那个dp入门题…但是有一些点无法转移到当前点 kkk ,因为 SSS 可能并不包含 1...k−11.
2021-08-24 00:42:24
121
原创 2021暑期牛客8-K Yet Another Problem About Pi
2021暑期牛客8-K Yet Another Problem About Pi思路solution中讲的很清晰了,除了最后那个显然(这里只证明一下那个显然的内容在不等式 \(ax+by\leq \pi\) 下最大化 \(2x+3y\) ,其中 \(a=min(w,d) \ \ and \ \ b=\sqrt{w^2+d^2}\) ,且 \(x,y\) 为整数不妨设 \(w\leq ...
2021-08-14 00:35:00
84
原创 2021暑期牛客多校8-F Robots
2021暑期牛客多校8-F Robots思路对于第一和第二种机器,因为方向唯一,暴力即可对于第三种机器,如果直接暴力的话时间和空间都无法承受,考虑优化一下如果从点 A 可以到达点 B ,那么就可以从点 A 到达点 B 右或下方不是障碍的地方换句话说,如果从点 B 左或上方的某一点 C 可以到达点 B ,那么所有能到点 C 的点也一定能到达点 B所以说能到点 B 的点的点集由点 B 本...
2021-08-13 23:37:00
83
原创 CF1486 C2. Guessing the Greatest (hard version)
CF1486 C2. Guessing the Greatest (hard version)思路首先,查询一下整个区间次大值的位置,记为 \(s\)然后,查询 \(1--s\) 这样就知道了最大值在 \(s\) 的哪一边,不妨设在左边然后二分 \(mid = (1+s-1)/2\) 查询 \(mid--s\) 这样就知道了最大值在 mid 的哪一边像这样二分下去,最后就能得到最大...
2021-08-13 22:53:00
95
原创 2021牛客暑期多校3-J
J签到差点没签成功.......如果一个三角形三条边不是同一种颜色,那么一定有一个顶点,与其相连的两条边颜色相反。所以枚举每一个点,统计其黑白边个数,相乘即是以其为顶点之一的三条边不是同一种颜色的三角形的个数。从总个数减去不满足的个数可以得到答案。不要忘了去重。复杂度 \(\Theta(n^2)\)#include <map>#include <set>...
2021-07-25 10:37:00
78
原创 2021暑期牛客多校1-G
G首先,考虑如果不限制k的话,最优解如何构造。显然,答案最大的情况就是前n大的数加,后面的数减。那么如何说明总能构造出这种情况呢,设 \(x_1,x_2\) 分别为 \(a,b\) 数列前 \(n\) 大的数字个数, \(y_1,y_2\) 分别为 \(a,b\) 数列前 \(n\) 小的个数。显然下面的等式成立\[\begin{cases}x_1+y_1=x_2+y_2 \\x...
2021-07-20 12:36:00
83
原创 2021暑期牛客多校1-A
A最重要的结论,任意两个先手必败态不会有重复的数字(不考虑两个位置交换)。于此,可以得到先手必败的个数的上限和 \(n\) 是同阶的。考虑将所有先手必败的情况找出来然后打表。从小到大枚举石子个数 \(i, j\ (i<j)\) ,考虑 \((i,j)\) 是否为先手必败。发现如果其能一步走到之前某一个先手必败,那么必是先手必胜,否则就是先手必败。因为只能从更大的必败走向更小的必...
2021-07-19 10:17:00
61
原创 CF1542D
直接计算子集 \(B\) 的 \(f(B)\) 不太现实,所以考虑计算每一个数的贡献我们规定相同的数序号更小的数的更小对于数 \(a_i\) ,显然对它有影响的只有所有的 "-", 它前面小于等于它的数,它后面小于它的数所以枚举每一个数的位置 \(i\) ,考虑 \(dp_j\) 表示小于等于 \(a_i\) 的数的个数为 \(j\) 得方案数转移方程如下for(int i=1; i&...
2021-07-07 22:22:00
126
原创 CF1542B
考虑将题述转化为数学表达式1在集合中,且 \(a*(1+nb)\) 在集合中,且 \(a*(a*(1+n_1b)+n_2b)\) 在集合中...不难发现所有形如 \(a^x+by\) 的数都在集合中,而且仅有这种类型的数在集合中,其中 \(0\leq x,y\)那么暴力枚举 \(x\) 就好,注意特判复杂度 \(\Theta(Tlog(n))\)...
2021-07-07 22:12:00
82
原创 arc119c
arc119c首先,观察操作的性质。如果选定了位置 \(x\) ,那么如果 \(\mid x-y \mid\) 为奇数,就可以将两位同时加或减1,反之,只能将一位加1,并且另一位减1.然后观察转移。如果一个区间成立,当且仅当所有数字可以转移到全为0,那么考虑选定一个位置 \(x\) ,从全0开始,所有和 \(x\) 距离为奇数的位置转移成原始序列中相应位置的数,距离偶数的位置保持0不变。...
2021-06-12 12:46:00
124
原创 CF1529E
两棵树分别记为 S,Klemma:一个团一定位于S的一条链上proof:显然考虑K树dfs序,任何节点的dfs序区间之间只有包含或不相交的关系(本身的dfs序和子树中最大的dfs序组成的区间)proof:显然考虑K树dfs序,则x是y的祖先的充分必要条件是x子树的dfs序区间包含y子树的dfs序区间proof:显然在加入新点时如果可行贪心选择,如果不可行保留不是祖...
2021-05-29 16:45:00
63
原创 CF1529D
规律,结论不妨假设现在有三种长度的区间 \(A,B,C\) ,其中 \(A<B<C\)lemma:每一个B区间必包含所有A区间,每一个C区间必包含所有B区间(每一个大的区间,必包含所有小的区间)proof:显然所有A区间包含的点集必连续,所有A,B区间包含的点集必连续(长度小于等于某一个数的所有区间包含的点集必连续)proof:以假设为例。不妨设A不连续,存在一点...
2021-05-29 13:52:00
70
原创 第十八届浙大城市学院程序设计竞赛(同步赛)D
第十八届浙大城市学院程序设计竞赛(同步赛)D大意略。。思路。。有点尴尬,下次这种题一定画图。。画图容易发现,对于 \(n-ary tree\) ,每棵子树的倒数第二个节点的标号除以 \(n\) 一定是父亲节点的标号。。严格的证明:不妨设节点 \(A\) 在第 \(i\) 层,位于本层第 \(j\) 个。由题得知每层的节点数是等比的,不妨设为 \(k\)所以节点 \(A\) 的标...
2021-03-30 14:12:00
70
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人