自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 GSS7 题解

在遇到路径查询时,顺序不能反。大力树剖,每次修改都转变为链上的。是越深越大的,所以拼接时,GSS3,但是在树上。

2024-08-29 23:20:31 208

原创 Vim youcompleteme Windows 安装保姆级教程

不说废话。

2024-08-22 20:56:34 1207

原创 ABC361 题解

显然如果把数列排序,一定从头或从尾删最快,剩余的一定是一个区间。我的 Atcoder 账号是 Eric_Cui,直接找就可以了。给一个类似华容道的游戏,可以把相邻的两个棋子放入宽为。注意到三个坐标独立,所以考虑对于三个坐标分别求交。注意转移时要考虑这个点以及后面的点是不是空。的空里,求起始状态到终止状态的最小步数。对于 B 来说有些难,感觉 B > C。,也可以跑一遍再输出的时候加入。给两个长方体,求它们有没有交。,不等式解集的交是好算的。给出一个数列,可以删除。大水题,但是样例更水。求树上哈密尔顿路径。

2024-07-07 09:21:46 924

原创 ABC350 FG 题解

本人 Unrated 在开始后 1h 参加,20 分钟过 F,1h 过 G。

2024-04-21 13:58:16 894

原创 ABC342 题解

给定一个串s,求与s中其它字符不同的字符的编号。

2024-02-26 21:50:18 1124

原创 线段树学习笔记 下

上面两篇是几年前写的,笔者今日才加以整理,如有错误请见谅。线段树加上就是可持久化线段树。

2024-02-24 23:05:13 534

原创 ABC341 题解

给定一个数N,求长度2N1的01交替的字符串(0开始)。

2024-02-21 22:16:17 511

原创 P6279 题解

结论(待论证)

2024-02-20 21:35:44 441

原创 P3647 题解

当存在多个这样的连通块时,如图 2,建树时节点一定会组成单一的连通块,因为。,因为没有边上的限制,所以可以任意取,对于是中点的情况,可以再加上边权。注意到方程里仍有大量之前可以利用的内容,所以需要维护最大值和次大值。:所有的蓝边都可以在某一个根上表现出形如。构成了单独的连通块,因为如果不是,那么。的蓝边时,可以证明不存在这样的边。是否为蓝边终点的子树最大边权和。的转移方程,我们照样也可以推出。如图,当存在形如 1 的情况时,枚举树根,对每个根 DP。所产生的蓝边对都提取出来。的转移方程,留给读者思考。

2024-02-08 23:29:55 1021

原创 归并树 学习笔记

问题示例:给定一个长为n的数组。q次查询,每次查询包括一个区间,需要回答关于区间元素排序的问题。

2024-02-04 22:02:28 904

原创 CF276E 题解

给定根为1的一棵树,除了根其它节点度数都最多为2。给定q0 u x dudx1 uu。

2024-01-25 20:20:50 917

原创 P6166 题解

数据结构裸题,但如果不用数据结构?

2024-01-21 21:47:05 347

原创 Codeforces Educational Round #154 (Div.2) 题解

上蓝场,当然要纪念一下。

2023-09-02 19:58:45 112

原创 ABC 315 题解

题目质量较高,特别是 F。建议 D 和 E 对调。

2023-08-19 22:45:20 344 2

原创 《美丽的数学》读后感

读完《美丽的数学》一书,我不禁感叹,南外推荐的书真的是好。(逃这里,我希望通过三个例子解释这本书的厉害所在。

2023-08-08 22:53:07 759

原创 P4824 Censoring 与 KMP模板 题解

给定字符串s和t,求s中子串为t的个数及所有起始位置。特别的,对于每个i,还要给出1i区间内,满足以下条件的j1≤jisubstr1jsubstri−j1i。

2023-08-06 23:08:13 122

原创 P4407 电子字典 题解

恶评,最多蓝。

2023-08-04 22:41:13 68

原创 ABC312 题解

ABC312 题解

2023-07-31 23:05:52 267

原创 P2915 Mixed Up Cows 题解

这题一眼,最多绿题,恶评。:给定一个长度为n的数列a和常数ki∈x∣x∈2n∩Z∣ai​−ai−1​∣k其中,n≤16。

2023-07-28 22:42:20 53

原创 CF1401D 题解

Problem Quality: Good, not very interesting (3/3→33/3\to33/3→3)Main section/category: Trees, GreedyDifficulty: 180018001800 official, 165016501650 personal.This problem is from 1401, a division two contest. The place of D is, however, an overestimate on

2023-03-29 14:32:30 82

原创 ABC278 题解

ABC278 题解

2022-11-20 22:20:25 598

原创 CF1207E 题解

CF1207E 题解

2022-09-29 20:31:56 555

原创 CF1624G 题解

CF1624G

2022-08-30 15:37:03 154

原创 Atcoder ABC266 F 题解

ABC266F

2022-08-28 18:19:44 414

原创 P7763 题解

P7763 题解

2022-08-27 22:01:27 181

原创 P1941 飞扬小鸟题解

P1941 题解

2022-06-26 21:14:46 193

原创 小学生信息与未来 2022 题解

小学生信息与未来2022题解

2022-06-05 18:57:23 2643 2

原创 ABC 253 题解

ABC253 题解这场还是偏水。A既然是中位数,那么就只需判定 bbb 是否夹在 aaa 和 ccc 之间。就是这样:a <= b && b <= c || a >= b && b >= cB暴力。直接将第一个 o 和第二个 o 得到就行了。然后求曼哈顿距离:d=∣x0−x1∣+∣y0−y1∣d = |x_0 - x_1| + |y_0 - y_1|d=∣x0​−x1​∣+∣y0​−y1​∣。int h, w;cin >&gt

2022-05-28 21:46:01 393

原创 CF1675F 题解

CF1675F 题解这道题其实不难,CF 给它估的 180018001800,过高了。解法贪心。一个重要的结论:同一子树内的节点必须连续访问。证明:假设先访问其它节点的子树。设 did_idi​ 为节点 iii 的深度,设 lca(u,v)\text{lca}(u,v)lca(u,v) 为节点 uuu 和 vvv 的 LCA。不妨考虑连续三个节点的距离总和,设它们为 x,y,zx,y,zx,y,z。不难得到,距离总和为 dx+2dy−2dlca(x,y)−2dlca(y,z)d_{x}+2

2022-05-19 22:13:08 233

原创 CF1579E2 题解

CF1579 E2 题解题意大意:有一个双端队列,开始为空。给出 nnn 个数,要在队列的前方或后方插入。问最后队列的逆序对最小是多少。不难发现一个贪心策略:在哪里插入新增的逆序对更少就往哪里插。证明如下:考虑在某一个点中,选择逆序对更多的插入。因为后面的数是在前面和末尾插入的,所以不影响后面的任何逆序对数量。而此处逆序对只能更多,所以原策略最优。求新增逆序对数目很简单。扫一下队列里的数,如果 ai<xa_i < xai​<x 那么插入在前面的逆序对数量增加,

2022-04-24 21:52:38 80

原创 CF778A 题解

Idea我们知道,这里的子串可以是不连续的!所以,删的字符少了没有任何问题。所以我们可以二分。我们二分的 ttt 就是答案。我们知道要从序列 aaa 取出一个前缀。所以,它的后缀一定是没有删除的。于是,我们往一个 vector 里面扔 ttt 到 nnn 的后缀,排序,就得到了保留的序列。再和目标字符串 ppp 一一比对,就可以了。Code:#include <bits/stdc++.h>using namespace std;string s, p;int a[200000

2021-08-24 10:38:21 178

原创 P1159 题解

贪心。好的这道题人家说是模拟?策略将 UP 的放在最后。DOWN 的放在最前。SAME 的不变。是不是很简单?证明我们先把 SAME 忽略(反正它是确定的)。对于第 111 个和第 nnn 个,我们知道,第一个一定是 UP,最后的一定是 DOWN。于是,对于所有的名字,一定会有一个可能的原来的位置。然后就是证明了。我们以 UP 为例。易得知,向下是肯定行的,因为每一块都向下移了几个。不可能最后被堵住了。DOWN 呢?设第 iii 个 DOWN 的位置为 aia_iai​,那么一

2021-08-13 11:29:06 123

原创 CF1234 B2 题解

CF1234 B2 题解好的这道题应该太水了没有人看 Orz。介绍一下 STL queue。queuequeue<type A> q 代表队列。这种东西有两种操作:插入。在 STL 中表示为 q.push(x)。删除。在 STL 中表示为 q.pop()。这是一种先进先出的数据结构。就比如食堂打饭(都烂掉了这例子……),队首的人打完就走,后面的人从队尾进入。这就是队列。所以,这里要用到 queue 是因为,进来时是在顶端,末端删除。然后怎么判重?我们需要用到 map。m

2021-08-11 18:52:01 94

原创 CF1006B 题解

CF1006B 题解水。Q:首先,如果不考虑最大,怎么办?A:我们就把 kkk 个最大的数分别放在 kkk 个序列中,就行了。Q:那么这 kkk 个数位置都是不相同的,那么不就是每一个序列带着一些比它小的而已吗?A:好的被膜拜的人不是我!(逃所以,我们只要将这个序列排序,找 kkk 大的数,记录它们的位置。设 aia_iai​ 为它从 111 开始标号的位置。然后,对于 1<i<k1 < i < k1<i<k,我们都可以得出,长度为 ai−ai−1a_i

2021-08-10 15:00:31 145

原创 ABC 213 题解

ABC 213 题解这场比赛出的比较良心 QAQAXOR 在 C++ 中代表异或,可以用 ^ 表示。XORaaa 和 bbb 异或是这样的:首先,把 aaa 和 bbb 转换成 222 进制。高位补 000。将它们逐位比较,相同的为假,不相同为真。再转 101010 进制。它的一个重要特性是:交换。详细来说,是这样的:void swap(int &a, int &b){ a = a ^ b; b = a ^ b; a = a

2021-08-08 22:39:47 411

原创 CF1538F 题解

这道题巨佬们都是用数位 dp 来做的……好的我们来考虑一下当一个数 +1+1+1 时变化的位数。0+1=10+1=10+1=1,变化为 1119+1=109+1=109+1=10,变化为 22299+1=10099+1=10099+1=100,变化为 333显然,进位后有多少 000,就会改变零的个数 +1+1+1 个数位。显然,对于每两个正整数 nnn 和 mmm,在 nnn 以内能被 mmm 整除的数的个数为 nm\displaystyle{\frac{n}{m}}mn​。所以,我们只

2021-08-06 14:29:15 175

原创 线段树学习笔记 中

GSSGSS 系列都是询问题,我们先来看看第一题 GSS1。GSS1题意给你一个长度为 nnn 的数列 aaa,一共 mmm 次询问。每次询问有两个数 lll 和 rrr,输出子序列 [l,r][l, r][l,r] 的最大子段和。解法线段树。可是,怎么做是个难点。可以分类讨论一下,就出来了:我们考虑每个区间的总和,最大前缀和,后缀和,子段和。我们考虑前缀和。显然,最大前缀和有两种情况:左子树的前缀和。左子树的总和 + 右子树的最大前缀和。类似,后缀和也有对应

2021-08-04 17:12:28 21

原创 CF1486A

首先,为了让这个序列为一个严格递增的序列,我们得让前面的数严格递增的情况下让后面的数尽可能大。这样就更有可能形成严格递增的样子了。比如 1000 1000 1000,我们可以把它变成 0 1 2999。我们把这个序列前面的数变的最小,让最后一个数尽可能大。这样,如果还是不行,就像 0 0 1 0 一样,那么就不行,因为 0 0 1 0 只能变成 0 0 0 1,而它不是严格递增的。或者说,只要一个数不满足要求就输出 NO,反之亦然。比如 0 0 1 0,到第二个数时就不行了,前两个数只能变成 0 0 (因为

2021-08-03 20:54:17 101

原创 CF1547C

贪心。我们先开一个答案序列。显然,一开始两个序列里有 000 就肯定先用上(但是要保证顺序,不能先用中间的再用前面的),从原先数组删除,插入答案序列,因为我们想要让行数越大越好,才能应对后面的数。如果都没有 000,那么就选更小的插入,因为这样才能保证成功的几率最大。如果最小的数都超过了现有的行数,那么这就说明不可能通过任何方法构造出合法的序列,我们就输出 -1。最后,如果两个序列都空了并且没有输出 -1,我们就输出答案序列。我们可以设两个数 iii 和 jjj,分别代表第一个序列和第二个序列分别已经删到

2021-08-03 20:49:55 88

原创 CF1553B题解

题意:给你两个字符串。现在有一个小片,你可以将它放在第一个字符串的任意一个位置上,往右移动若干格(可以为 000 格),再往左移动若干格(可以为 000 格),问小片从第一次开始覆盖到的字符组成的字符串可不可以为第二个字符串。比如字符串为 IAKIOI,如果将小片放到第二个字符上,即 A,然后向右移动 222 格,再向左移动 111 格,最后的字符串即为 AKIK。这道题我们可以暴力。我们知道,小片的移动过程为先右再左,不可能左右交叉或者先左再右。于是,我们枚举的就是从向右移动到向左移动的分界

2021-08-03 20:47:32 164

ABC 315 提交代码(A-F)

ABC 315 题解 详细可见 Eric_Cui 提交记录

2023-08-19

ABC312 Code (A-E)

Atcoder Beginner Contest 312 AC C++ 代码 板子较多,但码风清新( 可以使用 g++ 消灭板子! 本人提交记录见下: https://atcoder.jp/contests/abc312/submissions?f.Task=&f.LanguageName=&f.Status=&f.User=Eric_Cui

2023-08-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除