03 2020 档案
摘要:"原题" 暴露太多问题了,DP也不会... 题意:给你一个由大小写字母组成的字符串,你每次可以将大小写修改,问你最少几次修改,可以使这个字符串前缀是大写,后缀是小写 首先我们定义一个数组 dp1[N],它代表从前往后遍历,结尾为 a[i]的字符串最小修改次数; 后我们再定义一个数组 dp2[N],它
阅读全文
摘要:比赛时对这种线段树裸题都不够敏感,还是题做的太少了啊 因为前面有道题和这题内存限制一样爆内存了,这题一看数据也以为会爆,其实还是没认真去想,因为 n 次询问的范围很小,所以最多也就用 n 行,并不会爆内存 不过赛后自己不看题解也还是不会啊 "原题"
阅读全文
摘要:A.Sum of Odd Integers "原题" 题意:给你 n 和 k ,问你 n 能否由 k 个不同的奇数组成 首先只有 k 和 n 的奇偶性相同才有可能,其次 k 个奇数最小能组成的数必须小于等于 n ,即 k k using namespace std; typedef long lon
阅读全文
摘要:A.Bad Ugly Numbers "原题" 233333333~
阅读全文
摘要:"原题" 题意很好理解,主要通过本题理解一下双指针,我们可以用两个指针i,j分别记录子序列的结尾位置和开头位置。我们先枚举结尾位置 i ,因为要找最长的 不重复 连续子序列,j 就代表从 i 往前最远能够到达的位置。而要判断某个数是否出现过,我们可以开一个数组 s[N] 来记录每个数出现的次数,我们
阅读全文
摘要:"原题" 三分法,记个模板。 以单峰函数f为例,我们要求极大值点 x ,可以在定义域 [l,r] 上取两个三等分点 lmid , rmid ,把函数分为三段。 1. f(lmid) f(rmid),可令 r = rmid 3. f(lmid) = f(rmid), l = lmid 或 r = rm
阅读全文
摘要:"原题" 题意:求长度为k且字典序最大的子序列 用了ST表做,相比单调栈多了点代码,但也不是很长。 我们可以用ST表来存区间最值的下标,比如说我们某次要取一个数,就要从上次查询出的最值的后面选,同时为了保证后面的数不会不够选(如果还有k个数没选),我们要保证剩下的区间至少还剩 k 的长度,假设上次选
阅读全文
摘要:"原题" 本题是一道很经典的单调队列模板题,如果想要O(1)的时间内回答每个窗口,用ST表也可以,但是这道题洛谷上会被卡MLE,所以就来介绍一下单调队列。 因为是初次尝试,也为了便于理解,所以用数组模拟了单调队列 AC代码:
阅读全文
摘要:"原题" 题意:给你N个点和N 1条边,每条边不相同,大小为 [ 0 , N 2 ]的整数 ,你要使任意两个节点构成的所有(u,v)的MEX(u,v)的 最大值尽可能小 ,MEX(u,v)表示从节点u到节点v的唯一简单路径上没有写在任何边上的最小非负整数(即不等于任何u 到 v 所经过的边的权值的最
阅读全文
摘要:"原题" 一道很裸的RMQ,线段树专题里刷的,直接打ST表就好。
阅读全文
摘要:"原题" 这题是一道很坑很坑的题! 题目给的是区间两个端点,并没说谁大谁小,所以在 change 之前要注意 l 和 r 大小,保证l using namespace std; typedef long long ll; ll n,m; ll a[1000005]; struct tree { ll
阅读全文
摘要:"原题" 这题就是线段树区间修改板子题,没什么坑,主要是熟悉懒标记的使用 这题我看了网上很多题解,大多是不使用结构体而是开了数组,并且 change 函数的形参比较多。 但我坚持使用了《算法竞赛进阶指南》的写法,所以在做这题时debug了好久,一直找不到错误,但最后 AC 时的快感真是太爽了! 主要
阅读全文
摘要:"原题" 主要通过这题介绍 C++ 中如何将字符数组与字符串的相互转换 "参考博客" 字符数组转字符串: 字符串转字符数组 其实这题可以直接将原字符数组转换为三个字符串,不用上面这么麻烦....
阅读全文
摘要:"原题" 这是一道线段树裸体,记录一下加深印象。
阅读全文
摘要:"题目" 这题真是做得我心态爆炸! 题意: 给你一个字符串,让你从第一个字符开始,将以它为开头的长度为 k 的子串翻转,这样的子串与剩下的串构成新串,接着从第二个字符开始直到第 n k 个,找出这样构成的新串中字典序最小的,如有多个,k要最小的。 这题可以通过简单的找规律发现: 当n k+1为奇数时
阅读全文
摘要:根据树状数组的“区间修改,单点查询”我们知道用差分思想维护的树状数组 b , b[i] 的前缀和就是原数组 a[x] 增加的值,那么序列 a 的前缀和 a[1~x] 整体增加的值就是区间[1~x]的增加的值 原理不写了,直接写方法 在本题中,我们可以增加一个树状数组,用于维护 i b[i] 的 前缀
阅读全文
摘要:主要涉及二维树状数组查询和修改 直接看代码:
阅读全文
摘要:"原题" 根据题意 后加入的星星的纵坐标一定比前一个大或相等,所以在它之前所有横坐标小于等于它的星星一定在它的左下方。 注意数据范围! AC代码:
阅读全文
摘要:"原题" 逆序对定义: 对于一个序列 a,若 i a[j],则称 a[i] 与 a[j] 构成逆序对 如何使用树状数组求序列逆序对个数: 任意给定一个集合 a,如果 用 c[val] 保存数值 val 在集合 a 中出现的次数 ,那么数组 c 在 [l,r] 上的区间和就表示集合 a 在范围 [l,
阅读全文
摘要:素数筛法一直是我前期学习的难题,现在把它总结一下,防止忘记。 ① 普通筛法 O(n√n) 根据定义,一个合数n一定可以由两个数相乘得到,这两个因数一个大于√n,另一个小于√n,所以可以对因数从2到√n进行枚举,判断是否可以被n整除,如无法整除,则为素数。 ② 埃氏筛法 O(n㏒n) 如果一个数是素数
阅读全文
摘要:"原题" 该题涉及树状数组又一串操作: ① 区间修改 运用差分的思想,我们新建了一个数组b,初始化为零,对于每个指令"C l r d",我们只需将其转化为以下操作: 1.把b[l]加上d 2.再把b[r+1]减去d 做了这题,发现自己代码能力好差,找bug找了好久。 这题用了内联函数,发现也没快多少
阅读全文
摘要:"原题" 这是一道基于树状数组基本操作的板子题。 本题涉及到树状数组几个基本操作: ① 单点查询 ② 单点修改
阅读全文
摘要:记个板子 "原题" 注意这题数据范围 要开long long!
阅读全文

浙公网安备 33010602011771号