摘要: 需要按二段方向键的跳跃: 中途松开方向键的跳跃: 中途按下方向键的跳跃: 意想不到的小跳(如果上方有墙,小跳比大跳磕头跳的更远)(kid站的是最后的位置): 意想不到的小跳 2: 意想不到的小跳 3(如果上方有墙,小跳比大跳磕头跳的更远): 此类三个刺的情况,不能尝试找空隙跳,必须硬从刺上面怼过去:阅读全文
posted @ 2018-09-08 11:25 pechpo 阅读(9) 评论(0) 编辑
摘要: 常用算法设计和优化策略(本蒟蒻不定期更新) 下面是紫书上讲的常用算法设计策略和优化策略: 分治法:将问题分成相同的独立子问题求解。在普通的分治之外,还有一种cdq分治,思想是处理左边区间到右边区间的影响,归并算一个例子。 动态规划 第一种用法 本质是:对于一个问题,通过定义状态来 分解问题 。利用状阅读全文
posted @ 2018-03-01 23:14 pechpo 阅读(71) 评论(0) 编辑
摘要: photo 小明在旅游的路上看到了一条美丽的河,河上有许多船只,有的船只向左航行,有的船只向右航行。小明希望拍下这一美丽的风景,并且把尽可能多的船只都完整地拍到一张照片中。 小明位于河的边上,并且可以在河边的任意位置进行拍照,照相机的视野恰好为$90$度角,只能以垂直于河边的方向进行拍照。河上的船只阅读全文
posted @ 2018-09-17 16:33 pechpo 阅读(4) 评论(0) 编辑
摘要: 一点经验:压位以后,在2^x进制上的操作和在2进制上的操作,结果都是一样的!阅读全文
posted @ 2018-09-14 14:21 pechpo 阅读(4) 评论(0) 编辑
摘要: ``` set nocompatible set number filetype on set history=1000 colorscheme jellybeans syntax on set autoindent "set smartindent set tabstop=4 set shiftwidth=4 set showmatch set noexpandtab set guioption...阅读全文
posted @ 2018-09-13 09:11 pechpo 阅读(6) 评论(0) 编辑
摘要: 二分 忽然发现自己并写不对二分……先贴个知乎 "链接" 。 正如最高位答主所言——“有多少种写法都不重要,重要的是要会写一种对的。” 怎么写一种 对的 二分查找呢? 首先,我们要保证程序不会死循环。因此,当我们分开区间时,要保证区间被正好分成两半。例如,如果当前区间长度为2,就必须把区间分成两个长度阅读全文
posted @ 2018-09-12 18:58 pechpo 阅读(4) 评论(0) 编辑
摘要: 保护 给出一棵树,若干条树上路径。若干次询问某一点到根的路径上,被覆盖次数大于等于k的点的最浅深度。 把lca标记打到x点和y点的深度线段树上,那么从下往上线段树合并即可。当然,用主席树从上往下合并也可。 c++ include include using namespace std; const 阅读全文
posted @ 2018-09-12 16:03 pechpo 阅读(5) 评论(0) 编辑
摘要: 数数字 问$[L,R]$内,数位之积在$[L1,R1]$中的数的个数。 这显然是个数位dp……可是当我写完以后,我发现自己并d不出来。 如果用以前写数位之和的写法,先预处理出18个1~9相乘的状态,发现只有50000 个状态。因此,可以用$f[i][j][0/1]$表示dp到第i位,数位之积的对应编阅读全文
posted @ 2018-09-11 14:27 pechpo 阅读(6) 评论(0) 编辑
摘要: 旅行 给定一个长度为n的序列$a1,a2,\dots,an$。定义序列的代价为$\sum_{i=1}^{n 1}|a_i−a_{i+1}|$。 你现在可以任意次交换相邻的两个数,但是除了第一次交换以外,每次交换的两个数的位置都应该在前一次交换的两个数的位置的右边。 比如说,第一次交换了$(a2,a3阅读全文
posted @ 2018-09-10 18:43 pechpo 阅读(2) 评论(0) 编辑
摘要: すすめ! 数轴的原点上有一只青蛙。青蛙要跳到数轴上$\ge D$的位置去,但很不幸数轴上有$n$个区间是禁区,不能进入。 青蛙会选择一个长度$L$,从原点开始每次向右跳长度为$L$的一段。一路上青蛙会停的位置是0,L,2L,⋯,直到跳到了$\ge D$的位置。 任意一个位置都不能在禁区中。请求出$L阅读全文
posted @ 2018-09-10 11:14 pechpo 阅读(5) 评论(0) 编辑
摘要: 统计 给定长度为$n$的序列$a$,记$A=\{a_1,a_2,\dots,a_n\}$,你需要计算下面表达式的值: $$\sum_{\substack{S \subseteq A \\ |S| = k}} \left| \max_{x \in S} x \min_{y \in S} y \righ阅读全文
posted @ 2018-09-10 10:24 pechpo 阅读(2) 评论(0) 编辑
摘要: 需要按二段方向键的跳跃: 中途松开方向键的跳跃: 中途按下方向键的跳跃: 意想不到的小跳(如果上方有墙,小跳比大跳磕头跳的更远)(kid站的是最后的位置): 意想不到的小跳 2: 意想不到的小跳 3(如果上方有墙,小跳比大跳磕头跳的更远): 此类三个刺的情况,不能尝试找空隙跳,必须硬从刺上面怼过去:阅读全文
posted @ 2018-09-08 11:25 pechpo 阅读(9) 评论(0) 编辑