02 2020 档案

摘要:"费解的开关" 利用逆推,得出6步之内可以得到的状态,剪枝之后,可以在规定时间内完成。 阅读全文
posted @ 2020-02-26 20:08 caoanda 阅读(117) 评论(0) 推荐(0) 编辑
摘要:"递归实现指数型枚举" 状态压缩: 分别遍历每一个状态即可。 阅读全文
posted @ 2020-02-26 15:24 caoanda 阅读(154) 评论(0) 推荐(0) 编辑
摘要:"最短Hamilton路径" 利用动态规划可以很好地解决这个问题。 dp[i][j]中 i 利用状态压缩,可以表示已经走过了多少个点,j 表示的是当前所在点。 阅读全文
posted @ 2020-02-26 14:10 caoanda 阅读(142) 评论(0) 推荐(0) 编辑
摘要:"C2 Skyscrapers (hard version)" 分别用 表示在 i 位置能取到的左边的值之和,右边的值之和。 利用单调栈的思想。 降低复杂度的方法是,充分利用重复计算的数据,将其保存下来,避免多次计算。 阅读全文
posted @ 2020-02-24 19:19 caoanda 阅读(287) 评论(0) 推荐(0) 编辑
摘要:快速乘 参考: "小技巧1——长整型:64位整数的乘法模运算" 当 a 和 b 都大于1e9的时候,为了防止溢出,就需要一个算法,叫做快速乘。 实现方法一: 将乘法转换为加法,并且伴随着取模操作的进行,可以保证不会溢出。 而为了加速加法操作,可以利用快速幂的思路,对加法操作进行优化,复杂度为$O(l 阅读全文
posted @ 2020-02-22 16:13 caoanda 阅读(241) 评论(0) 推荐(0) 编辑
摘要:图中长度为k的路径的计数 Gk1+k2[u][v]=w=1nGk1[u][w]Gk2[w][v] 经过变形,Gk1+k2=w=1nGk1Gk2 所以Gk=G1k 阅读全文
posted @ 2020-02-21 22:58 caoanda 阅读(237) 评论(0) 推荐(0) 编辑
摘要:"Blocks" 利用递推的想法得到一个递推公式,在本质上它是一个 dp 的题目,但是由于 n 过大,不能使用 dp 解决,所以将递推公式化为矩阵乘法,所以可以用矩阵快速幂进行优化。 阅读全文
posted @ 2020-02-20 20:21 caoanda 阅读(417) 评论(0) 推荐(0) 编辑
摘要:矩阵快速幂 矩阵快速幂可以作为一种优化技巧,当知道第i+1项和第i项之间的递推式的时候,可以将其转化为矩阵运算,然后用矩阵快速幂进行优化。尤其适用于,要求第 n 项的值,而 n 很大的时候。 阅读全文
posted @ 2020-02-20 14:17 caoanda 阅读(143) 评论(0) 推荐(0) 编辑
摘要:O(m3log(n))求斐波那契数列 利用这个递推式:$(Fn+2Fn+1)=(1110)\begin{pmatrix}F_{n+1}\\F_{n}\end{ 阅读全文
posted @ 2020-02-19 10:08 caoanda 阅读(157) 评论(0) 推荐(0) 编辑
摘要:线段树树链剖分(边权) 阅读全文
posted @ 2020-02-18 20:08 caoanda 阅读(214) 评论(0) 推荐(0) 编辑
摘要:"E. 1 Trees and Queries" 该题需要用 lca 进行优化。 在树中求两点间的距离的方法为: 阅读全文
posted @ 2020-02-17 13:31 caoanda 阅读(182) 评论(0) 推荐(0) 编辑
摘要:"D Shortest and Longest LIS" 因为要使最长上升子序列分别为最小和最大,所以可以先分别让序列为 和`1 2 3...n 2 n 1 n`,然后再让序列满足题给条件,要注意的是连续的“”应该进行翻转操作。 通过这道题应该想到的东西是,题给条件所要求的“ ”、” define 阅读全文
posted @ 2020-02-16 13:46 caoanda 阅读(188) 评论(0) 推荐(0) 编辑
摘要:"D Domino for Young" 参考: "Codeforces Round 609 (DIV 2) D. Domino for Young" "D. Domino for Young" 题解的想法是将图形进行黑白交替染色 类似于: 黑白中个数最少的那个即是答案: 阅读全文
posted @ 2020-02-15 16:07 caoanda 阅读(144) 评论(0) 推荐(0) 编辑
摘要:"D Time to Run" "Codeforces Round 619 (Div. 2) Editorial" 特别要考虑到只有一行或者只有一列的情况。 如果由 k 直接正向推路径的话,难免会要考虑到很多种情况,不如先得到全部走完的路径,然后再从末尾开始减,一直到 k。另外,可以对将要输出的向量 阅读全文
posted @ 2020-02-14 22:23 caoanda 阅读(225) 评论(0) 推荐(0) 编辑
摘要:"C Ayoub's function" 参考: "Codeforces Round 619 (Div. 2) Editorial" 当从正面计算感觉很困难的时候,不如从反面来想,这是利用了容斥的思想。 我们只需要用所有子串的个数减去只包含0的子串个数即可。 而要是只包含0的子串的数量最少,那么就要 阅读全文
posted @ 2020-02-14 14:39 caoanda 阅读(202) 评论(0) 推荐(0) 编辑
摘要:"C Long Beautiful Integer" 对于这种思维题,其得到的规律不重要,重要的是得到规律的过程,在写题的时候,应该在纸上模拟得到样例的过程,这样有利于看出规律,因为相比于在脑海里想规律,在纸上表现出来的规律更加直观。 阅读全文
posted @ 2020-02-13 21:19 caoanda 阅读(126) 评论(0) 推荐(0) 编辑
摘要:"D Fill The Bag" 参考: "Educational Codeforces Round 82 A~E 题解" 因为这道题的 是2的幂次方,相当于是提示了我们需要用位运算来进行解决。 相当于二进制中的每一位,我们要做的是把 填进 n 的每一位中,一个 只能填一位。 低位的数字可以填高位, 阅读全文
posted @ 2020-02-13 15:26 caoanda 阅读(167) 评论(0) 推荐(0) 编辑
摘要:踏踏实实训练了一个寒假,总算是有些许起色,cf现在也打到了1640+,离1700就还有一步之遥,冲啊! 《挑战程序设计竞赛》也已经看了一半了,冲冲冲! 阅读全文
posted @ 2020-02-11 21:01 caoanda 阅读(134) 评论(0) 推荐(0) 编辑
摘要:"E Water Balance" 从头开始直接模拟即可,将这 n 个数分成很多个模块,如果发现一个模块可以降低前面一个模块的平均数,则跟前面一个模块合并,以此类推。 阅读全文
posted @ 2020-02-11 16:25 caoanda 阅读(201) 评论(0) 推荐(0) 编辑
摘要:"D Aerodynamic" T所表示的图形就相当于是把原点放在P所表示的图形的边缘,然后不断的把图形平移,绕原点旋转,原点始终位于P所表示出的图形的边缘。 这样一来可以意识到只有当原图形是中心对称图形的时候,T与P才会相似。 "证明图形为中心对称图形" 阅读全文
posted @ 2020-02-11 15:16 caoanda 阅读(308) 评论(0) 推荐(0) 编辑
摘要:证明图形为中心对称图形 ①有偶数个点 ②所有第 i 个点和第 n/2+i 的中点的位置都一样 阅读全文
posted @ 2020-02-11 15:15 caoanda 阅读(528) 评论(0) 推荐(0) 编辑
摘要:分块 数据: 初始化: 区间查询: 区间更新和区间查询差不多,有些时候需要用一个 来进行整块区间的加减操作。 阅读全文
posted @ 2020-02-10 15:49 caoanda 阅读(119) 评论(0) 推荐(0) 编辑
摘要:"K th Number" 两种写法:分块、线段树(归并树) 区间种第 k 个数的特点是:①在区间中不超过 x 的数不少于 k 个②在区间中小于 x 的数有不到 k 个 分块: 所以可以对答案进行二分,然后在判断是否满足的时候利用分块进行优化。 如果直接用n作为桶的大小的话,复杂度 阅读全文
posted @ 2020-02-09 23:39 caoanda 阅读(159) 评论(0) 推荐(0) 编辑
摘要:"A Simple Problem with Integers" 这道题目只涉及区间修改以及区间查询,所以只要我们利用线段树或者树状数组进行优化,这道题就很容易解决了。 树状数组:因为树状数组本质上之能涉及单点更新,所以,当遇到区间更新的时候,可以尝试将其通项分解为 n 个维度,这样就可以通过 n+ 阅读全文
posted @ 2020-02-09 14:28 caoanda 阅读(136) 评论(0) 推荐(0) 编辑
摘要:逆序对 所求的交换次数等价于满足iaj(i,j)的数对的个数(这种数对的个数叫做逆序数)。 可以利用树状数组来求解逆序对的问题 阅读全文
posted @ 2020-02-09 11:28 caoanda 阅读(144) 评论(0) 推荐(0) 编辑
摘要:ST表 在O(30n)的复杂度内建ST表 查询复杂度为O(log(n)) 模板求的是区间最大值,如果需要求最小值,只需要把 改为 即可。 阅读全文
posted @ 2020-02-08 19:27 caoanda 阅读(141) 评论(0) 推荐(0) 编辑
摘要:"Crane" 因为这道题需要需要对数据进行多次修改以及多次查询,而且涉及区间修改,所以最高效的办法就是利用线段树对其进行优化。 阅读全文
posted @ 2020-02-08 16:20 caoanda 阅读(289) 评论(0) 推荐(0) 编辑
摘要:"F Berland Beauty" 因为这道题的 n 只有5000的范围,所以直接暴力用O(n2)的写法也是可以的,只需要先 dfs 一遍,把每一条边都赋为其可能达到的最大值,然后再把所有的数据再 check 一遍即可。当然这道题也可以用树链剖分来进行优化。 阅读全文
posted @ 2020-02-07 19:12 caoanda 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"E2. String Coloring (hard version)" 首先我们要明确一点,最多只会出现26种颜色,因为当下字母 如果在后面 出现过,那么在 i 这个位置的最佳颜色选择即为先前确定的颜色。所以我们可以使用状态压缩来记录状态。 阅读全文
posted @ 2020-02-05 19:16 caoanda 阅读(171) 评论(0) 推荐(0) 编辑
摘要:"Paint Color" 该题关键就在于坐标离散化,然后要注意的一点就是把点坐标表示为每一个格子的坐标。 阅读全文
posted @ 2020-02-04 21:45 caoanda 阅读(664) 评论(0) 推荐(0) 编辑
摘要:坐标离散化 在一些数据范围很大,但是又只需要保存一些直线的情况下,不需要把整个地图都记录下来,只需要把直线及其前后行列保存即可。这样数据范围最多为6n6n。n 为直线条数。 测试数据: 阅读全文
posted @ 2020-02-04 21:16 caoanda 阅读(234) 评论(0) 推荐(0) 编辑
摘要:"D. Irreducible Anagrams" 存在irreducible anagram只有三种情况: ①长度为1 ②长度为2,且 ③长度大于2 ①和③很容易可以得出,这里只证明一下情况② 假设只存在 a,b,开头和结尾都是 a,那么匹配肯定是这样的:$\begin{cases}a... 阅读全文
posted @ 2020-02-03 15:33 caoanda 阅读(198) 评论(0) 推荐(0) 编辑
摘要:超大背包问题 输入条件:1n40,1wi,vi1015,1W1015 解法:因为不能够再像前面的背包问题一样,把背包容量作为状态来储存了,因为开不了那么大的空间,那么就应该好好利用 n 很小的这个优势,但是如果全部遍历的话,复杂度就是$ 阅读全文
posted @ 2020-02-02 20:44 caoanda 阅读(152) 评论(0) 推荐(0) 编辑
摘要:"4 Values whose Sum is 0" 如果直接暴力枚举的话,其复杂度为O(n4),这是必然超时的。 但是如果把这四个序列分成两半,通过遍历一半,而到另外一半去进行二分查找的话,复杂度就可以降为O(n2log(n))。 cpp // Created by CAD on 202 阅读全文
posted @ 2020-02-02 19:03 caoanda 阅读(147) 评论(0) 推荐(0) 编辑
摘要:"Physics Experiment" 这个题的关键就在于理解这个弹性碰撞,多个球之间的碰撞可以理解为是互不影响的,可以当作是擦身而过而不是相撞,最后再将其排个序即可。 阅读全文
posted @ 2020-02-02 15:33 caoanda 阅读(149) 评论(0) 推荐(0) 编辑
摘要:二进制表示集合 空集: 只有第 i 个元素的集合: 向集合中加入第 i 个元素:`S|1 枚举{0,1,...,n1}的所有子集: 枚举 sup 的所有子集: 枚举{0,1,...,n1}的所有子集大小为 k 的集合的方法: ① 的值就是将其最低位的1独立出来后的值 ② 就是将 阅读全文
posted @ 2020-02-01 21:42 caoanda 阅读(591) 评论(0) 推荐(0) 编辑
摘要:"Face The Right Way" 对于一些题目只能够进行暴力而又很容易超时的题目,只能够想办法去将其进行不断优化,不断降低其复杂度,才能解决。 反转操作只会影响 k 长度内的牛,所以,因为其连续性,我们可以用一个 sum 对其进行简化, 而不是每一次要用到的时候再临时来算。 阅读全文
posted @ 2020-02-01 19:46 caoanda 阅读(180) 评论(0) 推荐(0) 编辑
摘要:"Subsequence" 该题要求的是连续序列,所以有两个方法,一个是是二分加前缀和,复杂度为O(nlog(n)),另一种方法是用尺取法,复杂度为O(n) 尺取法代码: 阅读全文
posted @ 2020-02-01 14:21 caoanda 阅读(353) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示