Posts

C. Light Switches - Codeforces Round 963 (Div. 2)

https://codeforces.com/contest/1993/problem/C 题目大意 给定 $n$ 盏灯和 $n$ 长数组 $a_i (1 \le a_i \le 10^9)$ 和 $k$,$1 \le k \le n \le 2 \cdot 10^5$。 起初 $n$ 盏灯都不亮。$i$ 位置的灯在 $a_i$ 时刻第一次点亮,之后每过 $k$ 单位时间点亮熄灭状态反转一次。问最早什么时刻,所有灯都亮

D. Med-imize - Codeforces Round 963 (Div. 2)

https://codeforces.com/contest/1993/problem/D 题目大意 给出一个 $n \ (le 5 \cdot 10^5)$ 长的数组 $a$ 其中 $a_i \le 10^9$。给定一个 $k \ (\le 5 \cdot 10^5)$。 不断地从数组中删去一些长为 $k$ 的子数组(删除后把数组接起来),使得最后的数组长度 $\le k$。 问此时剩余元素的中位数

E. Level Up - Educational Codeforces Round 168

https://codeforces.com/contest/1997/problem/E 题目大意 给定 $n\ (\le 2 \cdot 10^5)$ 长的数组和 $q\ (\le 2 \cdot 10^5)$ 个询问。数组中元素 $a_i\ (\le 2 \cdot 10^5)$。对于参数 $k$,我们依次在数组中标记 $k$ 个不超过 $1$ 的数,之后从最后标记的下标开始,再标记 $k$ 个不超过 $2$ 的数,以此类推。 每

D. Maximize the Root - Educational Codeforces Round 168

https://codeforces.com/contest/1997/problem/D 题目大意 给以棵 $1$ 为根的有根树,节点数 $n \ (2 \le n \le 2 \times 10^5)$。每个节点上有权重 $a_i \ (1 \le a_i \le 10^9)$。每次操作可以选择给节点 $i$ 的权值 $+1$ 给其子树中所有其他节点权值 $-1$。任意时刻结点权值不能为

G. Penacony - Codeforces Round 962 (Div. 3)

https://codeforces.com/contest/1996/problem/G 题目大意 给出 $n \le 2 \cdot 10^5$ 个点的一个简单环,给出 $m \le 2 \cdot 10^5$ 组点。要求选最少的边,使得 $m$ 组点之间,都可以通过选的边连通。给的每组点 $u < v$。 简要题解 一般环形问题先想直线问题,再想断开环。 直线问题非常好解决

F. Bomb - Codeforces Round 962 (Div. 3)

https://codeforces.com/contest/1996/problem/F 题目大意 给定 $n \le 2 \cdot 10^5$ 的两个数组 $a$ 和 $b$。可以执行 $k \le 10^9$ 次操作,每次操作选择某个 $i$ 然后 $ans += a[i]$,之后 $a[i] = max(0, a[i] - b[i])$。问最大的 $ans$ 是多少。 简要题解 题目贪心的策略是显然的,只需要选当前最大

E. Decode - Codeforces Round 962 (Div. 3)

https://codeforces.com/contest/1996/problem/E 题目大意 给出 $01$ 串 $S$,长度 $\le 2 \cdot 10^5$。求其所有子串的 $01$ 个数相同的子串的个数。 简要题解 题目求 $\sum_l \sum_r \sum_x \sum_y [cnt0(x, y) == cnt1(x, y)] ,\ (1 \le l \le x \le y \le r \le n)$。 如果只有所有子串 $S(x, y)$ 的个数,那将非常好求。遇到 $0$ 就 $

D. Dense Subsequence - Intel Code Challenge Final Round

https://codeforces.com/problemset/problem/724/D 题目大意 给定一个字符串 $S$ 串长 $\le 10^5$ 给定 $m \le |S|$。选择一些下标,使得所有长度为 $m$ 的子串都至少包含一个备选的下标。找出一组符合规定的下标,使其字符任意重排之后字典序最小,输出这个最小字典序的串。 简要题

C. Sonya and Problem Wihtout a Legend - Codeforces Round 371 (Div. 1)

https://codeforces.com/contest/713/problem/C 题目大意 给定 $n \le 3000$ 的数组 $a$。每次操作可以使数组中的某个位置的值 $+1$ 或 $-1$。 问最少得操作次数使得数组严格单调递增。 简要题解 重要的 trick: $a_i < a_{i + 1} \iff a_i + 1 \le a_{i + 1} \iff a_i + 1 - i \le a_{i + 1} - i \iff a_i

B. Searching Rectangles - Codeforces Round 371 (Div. 1)

https://codeforces.com/contest/713/problem/B 题目大意 给定 $n \times n \ (n \le 2^16)$ 个方格区域,上面有两个未知的,不相交的,平行于坐标轴的矩形。 可以给出不超过 $200$ 次平行于坐标轴的矩形的询问(左上右下坐标),每次会给出完全包含在询问区域中的矩形个数。 最后需要回

C. The Values You Can Make - Codeforces Round 360 (Div.1)

题目链接 题目大意 给定 $n \le 500$ 个值的集合(值分别为 $a_i \le 500$)和一个值 $k \le 500$。 保证某个子集的和为 $k$。问对于子集和为 $k$ 的所有子集,有多少种不同的子集和,并输出这些可能得子集和。 简要题解 最初的想法

E. Wooden Game - Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)

https://codeforces.com/problemset/problem/1994/E 题目大意 给 $k$ 棵有根树,每棵大小为 $n_i$,根为 $1$,形态以每个非根点的父亲 $f_i$ 的形式给出。 一种操作可以去掉任意的子树并把子树的节点树“或”到答案 $ans$ 上。 求最大的 $ans$。 简要题解 这样的题一般的是考

[算法][图论] Vizing 定理

Vizing 定理 对于简单图 $G$: $$\chi'(G) \le \Delta (G) + 1$$ 其中 $\chi'(G)$ 为图 $G$ 的边色数,即最少使用多少颜色可以为 $G$ 的边染色,使得相邻边彼此颜色不同。$\Delta (G)$ 是图的最大点度数。 二分图 Vizing 定理 特别的对于二分图我们有 $$\chi'(G) = \Delta (G) $$ 我们可以构

《Learning Python》 笔记 第 4 章 介绍 Python 对象类型

第 4 章 介绍 Python 对象类型 Python 知识结构 程序由模块构成 模块包含语句 语句包含表达式 表达式创建并处理对象 为什么要使用内置类型 容易编写,可扩展,往往效率高,是语言标准的一部分。 Python 核心数据类型 数字、字符串、列表、字典、

[算法][DP] 高维前缀和 SOS DP

高维前缀和 SOS DP 子集和问题 其实这类算法更多的是解决子集和 (sum of subset) 问题,因此也叫 SOS DP。 $$ sum[i] = \sum_{j \subseteq i} a[j] $$ 即 $$ sum[i] = \sum_{j | i = i} a[j] $$ 这里我们有个非常显然的做法是可以枚举所有集合判断是否是当前所求

[Vim] usr_11

usr_11 从崩溃中恢复 11.1 基本恢复 一般来说如果硬盘没坏,崩溃了之后,文件的大部分内容可以恢复。 vim -r <FILENAME>这时 Vim 会读取 .swp 文件。为安全起见可以另存这个新文件。 可以用 vimdiff 比较新旧文件。 如果编辑

《Learning Python》 笔记 第 3 章 你应如何运行程序

第 3 章 你应如何运行程序 交互式命令行模式 开始一个交互式会话 > python Windows (cmd)上使用 <CTRL-Z> UNIX/PowerShell 上使用 <CTRL-D> 结束会话。 Python 3.3 中的新 Windows 选项:PATH 和 启动器 启动器用户可以输入 py 代替 python 并避免一些配置步骤。启动器可以更好的显式

《Learning Python》 笔记 第 2 章 Python 如何运行程序

《Learning Python》 笔记 第 2 章 Python 如何运行程序 Python 解释器简介 Python 是一门编程语言,同时是一个名为解释器的软件包。 解释器是让其他程序运行起来的程序,是代码与机器的计算机硬件之间的软件逻辑层。 Python 包安装

[Vim] usr_09

usr_09 使用 GUI 版本 09.1 GUI 版本的组件 gvim <FILENAME> vim -g <FILENAME> 标题栏文件名后可能会跟一个符号 - 文件不能被修改 + 已经被修改过 = 文件只读 =+ 只读但被修改过 没有标记则是一个普通的打开但没修改过的文件。 09.2 使用鼠标 使用鼠标可以移动光标和选

[Vim] usr_08

usr_08 分割窗口 08.1 分割窗口 增加一个水平的分割线 :split要在窗口间跳转可以使用 <CTRL-W>w或 <CTRL-W><CTRL-W>关闭当前窗口 :close多数时候类似于