Posts
https://codeforces.com/contest/1996/problem/F 题目大意 给定 n≤2⋅105 的两个数组 a 和 b。可以执行 k≤109 次操作,每次操作选择某个 i 然后 ans+=a[i],之后 a[i]=max(0,a[i]−b[i])。问最大的 ans 是多少。 简要题解 题目贪心的策略是显然的,只需要选当前最大
https://codeforces.com/contest/1996/problem/E 题目大意 给出 01 串 S,长度 ≤2⋅105。求其所有子串的 01 个数相同的子串的个数。 简要题解 题目求 ∑l∑r∑x∑y[cnt0(x,y)==cnt1(x,y)], (1≤l≤x≤y≤r≤n)。 如果只有所有子串 S(x,y) 的个数,那将非常好求。遇到 0 就 $
https://codeforces.com/problemset/problem/724/D 题目大意 给定一个字符串 S 串长 ≤105 给定 m≤|S|。选择一些下标,使得所有长度为 m 的子串都至少包含一个备选的下标。找出一组符合规定的下标,使其字符任意重排之后字典序最小,输出这个最小字典序的串。 简要题
https://codeforces.com/contest/713/problem/C 题目大意 给定 n≤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
https://codeforces.com/contest/713/problem/B 题目大意 给定 n×n (n≤216) 个方格区域,上面有两个未知的,不相交的,平行于坐标轴的矩形。 可以给出不超过 200 次平行于坐标轴的矩形的询问(左上右下坐标),每次会给出完全包含在询问区域中的矩形个数。 最后需要回
题目链接 题目大意 给定 n≤500 个值的集合(值分别为 ai≤500)和一个值 k≤500。 保证某个子集的和为 k。问对于子集和为 k 的所有子集,有多少种不同的子集和,并输出这些可能得子集和。 简要题解 最初的想法
https://codeforces.com/problemset/problem/1994/E 题目大意 给 k 棵有根树,每棵大小为 ni,根为 1,形态以每个非根点的父亲 fi 的形式给出。 一种操作可以去掉任意的子树并把子树的节点树“或”到答案 ans 上。 求最大的 ans。 简要题解 这样的题一般的是考
Vizing 定理 对于简单图 G: χ′(G)≤Δ(G)+1 其中 χ′(G) 为图 G 的边色数,即最少使用多少颜色可以为 G 的边染色,使得相邻边彼此颜色不同。Δ(G) 是图的最大点度数。 二分图 Vizing 定理 特别的对于二分图我们有 χ′(G)=Δ(G) 我们可以构
第 4 章 介绍 Python 对象类型 Python 知识结构 程序由模块构成 模块包含语句 语句包含表达式 表达式创建并处理对象 为什么要使用内置类型 容易编写,可扩展,往往效率高,是语言标准的一部分。 Python 核心数据类型 数字、字符串、列表、字典、
高维前缀和 SOS DP 子集和问题 其实这类算法更多的是解决子集和 (sum of subset) 问题,因此也叫 SOS DP。 sum[i]=∑j⊆ia[j] 即 sum[i]=∑j|i=ia[j] 这里我们有个非常显然的做法是可以枚举所有集合判断是否是当前所求
usr_11 从崩溃中恢复 11.1 基本恢复 一般来说如果硬盘没坏,崩溃了之后,文件的大部分内容可以恢复。 vim -r <FILENAME>这时 Vim 会读取 .swp 文件。为安全起见可以另存这个新文件。 可以用 vimdiff 比较新旧文件。 如果编辑
第 3 章 你应如何运行程序 交互式命令行模式 开始一个交互式会话 > python Windows (cmd)上使用 <CTRL-Z> UNIX/PowerShell 上使用 <CTRL-D> 结束会话。 Python 3.3 中的新 Windows 选项:PATH 和 启动器 启动器用户可以输入 py 代替 python 并避免一些配置步骤。启动器可以更好的显式
《Learning Python》 笔记 第 2 章 Python 如何运行程序 Python 解释器简介 Python 是一门编程语言,同时是一个名为解释器的软件包。 解释器是让其他程序运行起来的程序,是代码与机器的计算机硬件之间的软件逻辑层。 Python 包安装
usr_09 使用 GUI 版本 09.1 GUI 版本的组件 gvim <FILENAME> vim -g <FILENAME> 标题栏文件名后可能会跟一个符号 - 文件不能被修改 + 已经被修改过 = 文件只读 =+ 只读但被修改过 没有标记则是一个普通的打开但没修改过的文件。 09.2 使用鼠标 使用鼠标可以移动光标和选
usr_08 分割窗口 08.1 分割窗口 增加一个水平的分割线 :split要在窗口间跳转可以使用 <CTRL-W>w或 <CTRL-W><CTRL-W>关闭当前窗口 :close多数时候类似于
《Learning Python》 笔记 第 1 章 问答环节 Python 是一门脚本语言吗 Python 是通用型编程语言,时常扮演脚本语言的角色。 Python 的缺点 比起完全编译并比较底层的语言,执行速度不够快。 使用 Python 可以做什么 系统编程、GUI、
usr_07 编辑多个文件 07.1 编辑另一个文件 :edit <FILENAME>需要先保存当前文件的修改,或者使用 :edit! <FILENAME>放弃当前文件修改并打开另一个文件。 想编辑其他文件又不保存当前文件则可
usr_06 使用语法高亮 06.1 功能激活 :syntax enable只在支持色彩的终端中生效,在 vimrc 中加入 if &t_Co > 1 syntax enableendif只在 Gui 版本生效则在 gvimrc 加入 syntax enable06.2 颜色显示不出来或者显示出错误的颜色怎么办? 终端不支持彩色,这时 vim 会
usr_05 选项设置 05.1 vimrc 文件 可以使用如下命令打开 Vim 配置文件 :edit MYVIMRC可以在开头放上sourceVIMRUNTIME/defaults.vim来导入默认配置。vimrc 文件可以包含任何冒号命令。 05.2 vimrc 示例解释 if has("vms") set
usr_04 作小改动 04.1 操作符与动作 Vim 只删除从当前位置到”动作“把光标移动到的位置的前一个位置。是否包括光标所在的字符取决于你使用的移动命令。包括当前字符在参考手册中称为 inclusive、否则成为 exclusi