自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zqy1018的blog

部分博文源文件地址:https://github.com/zqy1018/algorithm_learning

  • 博客(33)
  • 收藏
  • 关注

原创 【解题总结】2020 CCPC 绵阳站

B Building Blocks题意:给定一个这题判断失误了,比赛的时候认为是一个不可做题,后面听讲题才发现也没有那么不可做…C Code a Trie题意:D Defuse the Bombs最简单的方法是二分最多能活多久就行,稍微好一点的方法在二分的基础上发现规律,从而仅用一次排序就求出结果。E Escape from the IslandG Game of Cards题意:有四种牌,点数各为 0、1、2、3,初始局面每种牌各有若干张。A 和 B 玩游戏,A 先手。当前玩家可以选择现

2020-11-02 10:57:50 3000 10

原创 【论题选编】单调栈和全 1 子矩阵

(低技术力预警)有时我们希望对 01 矩阵中,每个全 1 子矩阵做一些统计。一种通用的方法是单调栈。我们从上到下枚举行,然后考察以该行为底边的所有全 1 子矩阵。利用单调栈,我们可以得到以该行为底边的所有极大子矩阵。假设对一个高为 hhh、宽为 www 的矩形,其权值为 f(h,w)f(h, w)f(h,w),那么对一个高为 hhh、宽为 www 的极大子矩阵而言,其包含的所有矩形的贡献和为sum(h,w)=∑h′=1h∑w′=1w(w−w′+1)f(h′,w′)sum(h, w) = \sum_

2020-10-25 00:34:37 43

原创 【论题选编】可重集表示数问题

(最近做题太少,只能水一个简单的文章。)大概就是三个题目混合起来。首先给出定义:一个可重集 SSS 可以表示出数 xxx,当且仅当存在 T⊂ST\subset ST⊂S 使得 TTT 中元素的和恰为 xxx。例 1题意:给定数组 aaa 和数 nnn,问最少向 aaa 中插入多少个在 [1,n][1, n][1,n] 中的正整数,能让 aaa 构成的可重集表示出 xxx。(来源:Leetcode 330)贪心。一个很显然的想法是:如果当前数组覆盖不到 xxx,那么我们肯定要添加一个 ≤x\le

2020-10-21 22:14:09 46

原创 【解题总结】Codeforces Raif Round 1

A Box is Pull最优策略必然是至多只拐一个弯。B Belted Rooms先缩点,然后看能不能连成一个环。C ABBB类似括号匹配,A 是左括号,B 是右括号。D Bouncing Boomerangs一个简单的构造方法是按列从右向左考虑,利用右边的列满足左边的条件。我们考虑遇到某个 aia_iai​ 时怎么满足条件。如果 ai=0a_i = 0ai​=0,那么就不在这列放障碍物。如果 ai=1a_i= 1ai​=1,就在 (i,i)(i, i)(i,i) 处先放一个障碍物。

2020-10-18 01:17:24 784

原创 【解题总结】Codeforces Global Round 11

A Avoiding Zero如果和是正数就排成正数、0、负数,否则排成负数、0、正数。B Chess Cheater抽出最前面和最后面的 L 段,再考虑夹在两段 W 之间的 L 段。看后面最多能贪心选取几个段,全部填充为 W 即可。C The Hard Work of Paparazzi题意:给定一个 r×rr \times rr×r 网格图,一开始你在 (1,1)(1, 1)(1,1)。1 单位时间可以在网格图上移动 1 单位距离。tit_iti​ 时间在 (xi,yi)(x_i, y_i)(

2020-10-11 11:38:42 306

原创 【解题总结】Asia Tokyo Regional Contest 2012(Codeforces Gym 101412)

A Ginkgo Numbers暴力枚举,略。B Stylish简单题,就是题意可能不是很好懂…C One-Dimensional Cellular Automaton听说是个不是很难的矩阵快速幂,略。D Find the Outlier高斯消元还原多项式,略。E Sliding Block Puzzle经典推箱子问题,略。除了代码长长长之外没啥特别值得提的地方。#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing nam

2020-10-06 23:31:58 35

原创 【解题总结】ECNA 2017(Codeforces Gym 101673)

时间久远,忘记了过题情况。C DRM Messages简单模拟,略。D Game of Throwns简单模拟,略。I Twenty Four, Again简单模拟,略。J Workout for a Dumbbell简单模拟,略。F Keeping On Track简单树形 DP,略。G A Question of Ingestion简单 DP,略。H Sheba’s Amoebas简单 BFS,略。E Is-A? Has-A? Who Knowz-A?听说是一个不很难的暴

2020-09-30 23:50:08 99

原创 【解题总结】Codeforces Round 673 (Div. 1)

A k-Amazing Numbers题意:给定长为 nnn 的序列,对于每个 k∈[1,n]k \in [1, n]k∈[1,n] 问在每个长为 kkk 的子段中都出现过的数中最小的是多少(可能不存在)。对序列中每种数 aaa 看其之间最大间隔是多少,设为 ttt,那么所有 ≥t\ge t≥t 的 kkk 的答案存在,且至多是 aaa。于是做一个后缀 min 即可。B Make Them Equal题意:给定长为 nnn 的正整数序列,每次可以选定 i,j∈[1,n]i, j \in [1, n

2020-09-28 23:13:50 91

原创 【解题总结】Codeforces Round 672 (Div. 2)

C设 an+1=0a_{n+1} = 0an+1​=0,那么答案就是 ∑i=1nmax⁡(0,ai−ai+1)\sum_{i=1}^{n} \max(0, a_i - a_{i+1})∑i=1n​max(0,ai​−ai+1​)。于是交换就能 O(1)O(1)O(1) 维护。D简单组合数。E设 1 有 tottottot 个。那么答案只和新串中每一段 0 的个数有关。即答案为n(n−1)2−tot(tot−1)2−tot(n−tot)−∑(li2)\frac{n(n-1)}{2} - \fr

2020-09-25 10:40:25 233

原创 【学习记录】线性同余不等式

考虑解 L≤Dx mod M≤RL\le Dx \bmod M \le RL≤DxmodM≤R,其中 0≤L≤R<M,D<M0 \le L \le R < M, D < M0≤L≤R<M,D<M。假设有解,那么存在 yyy,使得 L≤Dx−My≤ML\le Dx -My \le ML≤Dx−My≤M。变形得到Dx−R≤My≤Dx−LDx - R\le My \le Dx-LDx−R≤My≤Dx−L对 DDD 取模,得到−R mod D≤(M mod D)y≤

2020-09-24 18:49:16 69

原创 【解题总结】2020 CCPC 网络选拔赛

1010签到,略。1003简单贪心,先往右边走,然后逐步往左边走。1007答案就是出现次数最多的字符出现的次数。1011容易发现只有当 K1,1=1K_{1, 1} = 1K1,1​=1 时输出和原矩阵相同,否则一定会收敛到 OOO。...

2020-09-21 17:00:10 1699

原创 【单题题解】2015 ICPC 北京网络赛 Scores

题意五维偏序,在线。题解上 bitset。分别考虑每一维,把在这一维不大于询问的所有编号对应的 bit 设为 1。全部与起来,1 的个数就是答案。暴力 bitset 空间复杂度不行,分块优化一下即可。即块之间做前缀和,块内暴力 set。注意分块对象是 nnn,不是值域。#include <bits/stdc++.h>using namespace std;int read(){ int f = 1, x = 0; char c = getchar(); w

2020-09-14 21:11:02 35

原创 【解题总结】Atcoder Beginner Contest 汇总

ABC

2020-09-14 20:21:36 32

原创 【解题总结】Codeforces Round 670 (Div. 2)

C Link Cut Centroids题意:给定一个树,要求删掉某条树边、再加入某条新边使得新图仍然是树,且重心唯一。输出一个可行方案。由重心性质:一个树要么有一个重心,要么有两个在同一条边上的重心。对于后者,设两个重心为 a,ba, ba,b。只要把连着 (a,b)(a, b)(a,b) 断开,然后把 aaa 的一个叶子割下来接到 bbb 上即可。D Three Sequences考虑差分序列,设 di=ai−ai−1(i>1)d_i = a_i - a_{i-1} (i > 1

2020-09-14 20:05:13 41

原创 【单题题解】UOJ #41【清华集训2014】矩阵变换

题意原题题意已经够简明,所以直接传送门。题解显然这是一个二分图匹配问题。先看什么情况下不合法。如果对于行 i,ji, ji,j,它们各自选了 pi,pjp_i, p_jpi​,pj​,那么 pip_ipi​ 会导致不合法当且仅当 pip_ipi​ 在 iii 中的位置比 jjj 靠前。然后是一个神仙的观察:如果把行看作男性,从前向后的 [1,N][1, N][1,N] 排列看作是降序的喜爱程度,而把要构造的排列看作女性,把其在每一行出现的下标从大向小看作是降序的喜爱程度,那么这就等价于 (i,pi

2020-09-10 21:32:53 37

原创 【学习记录】稳定婚姻问题

定义题意:有 nnn 男 nnn 女,每一个人都对其他 nnn 个异性有不同程度的喜爱,用一个长为 nnn 的列表表示,列表中的异性按喜爱程度从高到低排列。问能否找出一个结婚方案,使得不存在两对夫妻 (m,w′),(m′,w)(m, w'), (m', w)(m,w′),(m′,w),使得 mmm 比起 w′w'w′ 更喜爱 www,www 比起 m′m'm′ 更喜爱 mmm,如果两对夫妻 (m,w′),(m′,w)(m, w'), (m', w)(m,w′),(m′,w) 没有上述情况就称这两对夫妻是

2020-09-10 10:29:31 857 1

原创 【学习记录】矩阵乘法

基本一个 n×mn \times mn×m 和 m×pm \times pm×p 的矩阵相乘的时间复杂度为 O(nmp)O(nmp)O(nmp),得到的结果为 n×pn\times pn×p 的矩阵。由于矩阵乘法有结合律,因此对于一个 nnn 阶矩阵 AAA,可以利用快速幂在 O(n3log⁡k)O(n^3 \log k)O(n3logk) 的时间内计算 AkA^kAk。Strassen 矩阵乘法应用了分治的想法,把原来的 n×nn \times nn×n 和 n×nn \times nn×n 的矩

2020-09-06 20:22:07 58

原创 【解题总结】AGC001 简要题解

A BBQ Easy排序贪心,两个两个选。B Mysterious Light容易归化成下面的形式,于是可以在与辗转相除法相同的时间复杂度内求解。C Shorten Diameter枚举树的所有可能中心,然后删掉那些距离中心超过 K2\frac{K}{2}2K​ 的点即可。D Arrays and Palindrome首先考虑什么情况下无解:如果把两个排列所有相应位置连边,那么至少要是一棵树才能保证所有位置字符相同。一个排列中有一个奇数就少半条边,因此如果 aaa 有多于两个奇数,那么边的个

2020-09-04 16:36:09 44

原创 【学习记录】树状数组

能用一个二进制数分出 O(log⁡n)O(\log n)O(logn) 个小区间:从 [x−lowbit⁡(x)+1,x][x - \operatorname{lowbit}(x) + 1, x][x−lowbit(x)+1,x] 递归下去。利用这种思想,对于一个数组 a[i]a[i]a[i],可以构造出一个数组 c[i]c[i]c[i],其中 c[x]=∑i=x−lowbit⁡(x)+1xa[i]c[x] = \sum _{i=x - \operatorname{lowbit}(x) + 1}^{x} a

2020-08-29 15:34:46 39

原创 【学习记录】并查集

并查集是一个实现起来较为简单的数据结构。它维护的是一系列不相交集合(当然方便的说法是一堆点),每一个集合都由该集合中的一个代表元表示。但它可以有奇妙的用法。基本实现整个并查集实际上是一个森林,每一个元素 xxx 都有一个属性 fa[x]fa[x]fa[x] 作为 xxx 所在的树的父节点。树根的父节点设为它本身。这样只要不断沿着 fa[x]fa[x]fa[x] 走就能走到这一棵树的根,从而知道一个元素的归属。事实上整棵树的形态并不重要,因为我们需要知道的是一个元素所在树的根节点。因此可以在递归找根时,

2020-08-29 13:19:55 57

原创 【解题总结】North-Western Russia Regional Contest 2019(Codeforces Gym 102411)

我解决的:A、I、B。没看的:无。旁观的:C、E、M、K、J、L、H。看了但没做出来的:D、F、G。A Accurate Movement简单题,略。M Managing Difficulties简单题,略。K King’s Children一个不是很困难的构造,略。E Equidistant题意;给定一个树,有 mmm 个关键点,问树上有无某个点使得这个点到每一个关键点的距离相同。把所有关键点放进队列里 BFS,对每个点统计离其最近的关键点个数即可。#include <bi

2020-08-29 00:04:26 57

原创 【学习记录】环计数问题

环计数问题是一类比较有意思的问题。

2020-08-28 00:36:07 52

原创 【解题总结】SEERC 2019(Codeforces Gym 102392)

我解决的:D、I、E。没看的:H、K。旁观的:B、G。看了但没做出来的:A、C、F、J。E Life Transfer简单题,略。D Cycle String?题意:给定一个长为 2N2N2N 的串,问能否将其重新排列使得新串的每一个长度为 NNN 的循环子串(即这个子串可以由原串的某个后缀和前缀拼接而成)互不相同,如果能要给出一个构造。统计每一个字符出现的数目,然后分类讨论。只有一种字符,那必然无解。只有两种字符,且某种字符出现了不少于 2N−22N-22N−2 次,那么就可能无解,

2020-08-27 23:10:38 103

原创 【解题总结】Latin American Regional Contest 2019(Codeforces Gym 102428)

我解决的:E、I、F。没看的:C、H。旁观的:G、M、B、D、L、K。看了但没做出来的:A、J。E Eggfruit Cake简单题,略。I Improve SPAM简单拓扑排序,略。M Mountain Ranges简单题,略。K Know your Aliens简单构造题,略。F Fabricating Sculptures题意:给定 S,B(B≥S)S, B(B \ge S)S,B(B≥S),求出所有“单峰拆分”的方案数。单峰拆分即将 BBB 拆分成 SSS 个正整数 {ai

2020-08-27 01:02:06 63

原创 【解题总结】SWERC 2018(Codeforces Gym 102465)

我解决的:B、H、G(1 WA)。没看的:无。旁观的:A、D、E、F、I、J、K。看了但没做出来的:C。A City of Lights简单题,略。K Dishonest Driver题意:要求压缩长为 NNN 的字符串,一个串 sss 连续出现 ttt 次可以被压缩为 (s)t(s)^t(s)t,压缩后的长度为 sss 的长度。求可达到的最短长度。N≤700N \le 700N≤700。考虑区间 DP,设 f(i,j)f(i, j)f(i,j) 为区间 [i,j][i, j][i,j] 的

2020-08-25 22:08:46 149

原创 【解题总结】Pacific Northwest Regional Contest 2019(Codeforces Gym 102433)

我解决的:E、D、L、M(1 WA)、K。没看的:G。旁观的:A、B、C、I、J。看了但没做出来的:F、H。E Rainbow Strings简单题,略。但可能要稍微想两分钟。D Dividing By Two题意:给定 AAA 和 BBB 两个数,每次操作可以将 AAA 加 1 或者除以 2(如果 AAA 是偶数)。问将 AAA 变成 BBB 的最少操作次数。当 AAA 大于 BBB 时,尽可能地去除是最优的。当 AAA 不大于 BBB 时,直接加到 BBB 是最优的。int ans =

2020-08-25 21:52:15 124

原创 【解题总结】NWERC 2018(Codeforces Gym 102483)

我解决的:K、B(得知算法后写出)、J(2 WA)。没看的:D(不会做)。我旁观的:A、C、H、I、G、E(我可能能做出来,但是估计要写好久)。看了不会做的:F。K Kleptography简单题,略。我还想了一会才写出来,代码能力属实不行。I Inflation简单题,略。H Hard Drive应该是简单题?略。J Jinxed Betting题意(转化后):给定一些数,每次可以对这些数进行操作,一次操作为:设最大的数有 aaa 个,将最大的 ⌊a2⌋\lfloor \frac{a

2020-08-25 21:49:38 194

原创 【论题选编】稠密图最短路

有的最短路题目中,可能边的数目很大,朴素建图边的数目为 O(∣V∣2)O(|V|^2)O(∣V∣2)。这样很难直接应用 Dijkstra 算法等。对付这种图,一般采用的策略是:去除无用选项。有可能两点之间直接连接的路径长一定不是最短路径,这样就可以排除大多数路径,只构造那些有用的边。构造等价选项。有可能两点之间的路径长完全等价于按照某种简单模式形成的路径长,这样就可以考虑这种简单的模式。优化建图方式。例如建立虚拟点,以代替完全子图中各个点之间的相互连边。例 1:最短路 1题意:有 nnn 个

2020-08-21 23:50:08 51

原创 【解题总结】牛客练习赛 67

总题难度递增。感觉 E 题的做法比较新奇。F 题在 51nod 有强化版本。E 牛妹游历城市题意:给定 nnn 个点,第 iii 个点有权值 aia_iai​。如果对于 i,ji, ji,j 有 aiand⁡aja_i \operatorname{and} a_jai​andaj​ 不为 000,那么 i,ji, ji,j 间有无向边,边权为 lowbit⁡(aiand⁡aj)\operatorname{lowbit}(a_i \operatorname{and} a_j)lowbit(ai​andaj

2020-08-21 23:47:51 44

原创 【解题总结】SWERC 2019(Codeforces Gym 102501)

我解决的:B(1 WA)、I、J、A(3 WA)、D(1 WA,1 TLE)。没看的:无。旁观的:C、F、K、G、H。看了但没做出来的:E、L。I Rats简单题,略。B Biodiversity简单题,略。C Ants简单题,略。A Environment-Friendly Travel最短路,略。本来应该一次过的题目,但写错了好几个地方,简直丢人。F Icebergs题意:给定几个简单多边形,计算其面积的和。计算几何模板题,丢人的在于我还不会写(板子也没带)。D Gnalc

2020-08-21 23:19:28 99

原创 【解题总结】NWERC 2019(Codeforces Gym 102500)

我解决的:E(1 WA)、F、I、A。没看的:H。旁观的:C、G、D。看了但没做出来的:K、B、J。E Expeditious Cubing简单题,略。F Firetrucks Are Red题意:有 nnn 个点,每个点有一个数集。两个点的数集有非空交集则两个点可以以该数为权,连一条边。求一个生成树。枚举数,将具有相同数的点连起来即可,要用并查集维护连通性。#include <bits/stdc++.h>using namespace std;unordered_map&

2020-08-21 23:13:46 177

原创 【解题总结】Waterloo Local 2012-2013(Codeforces Gym 100169)

感官难度:C=D<A<E<BC=D<A<E<BC=D<A<E<B。A Bridges and Tunnels题意:给定一张无向图,图上边分为室外和室内两类,每条边有权值。求以室外的边权和为第一关键字,室内和室外的边权和为第二关键字的最短路。直接用 pair 存一下这两个关键字即可。代码链接E Tetrahedron Inequality题意:给 6 条边,问能否组成一个体积非 0 的正四面体。多组数据。枚举 6 条边的所有排列。首先保证能组

2020-08-14 15:15:42 43

原创 【学习记录】线性选择

线性选择我们可以在 O(nlog⁡k)O(n\log k)O(nlogk) 的时间内获得一个序列内的第 kkk 大的数。但是有没有更快的方法?快速选择一种方法是仿照快速排序,每次随机选择一个主元,并且将小于它和大于它的元素分别放到它的左边和右边。这样我们就很容易判断第 kkk 大的元素在哪一部分,从而递归的去寻找。最优情况下,我们每次找到的都是中位数,这样时间复杂度是线性的。但在极端情况下,对于某个序列和某个 kkk,该算法的时间复杂度会退化到 O(n2)O(n^2)O(n2) 级别。而最原始的快速

2020-08-13 23:26:38 57

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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