SD集训总结
在SD呆了8天,补了补基础(和重学没有什么区别)
DAY1-DAY4:
学了搜索,分治。
搜索还比较熟练,但分治有些时候调试要花一些时间,二分的时候很容易写死。
除了DAY1的逆序对一开始有点蒙(后面搞懂了),都还比较好。
考试也算是渐入佳进吧,DAY4的大考上午190,下午180,拿了第2.(orz xlh orz)
写万能头是会爆零的——
#include<iostream> #include<algorithm> #include<cstdio> #include<cmath> #include<cstring> //常用的五个头文件 #include<queue> #include<stack> //栈和队列
DAY5-DAY8:
学了动规。
这个是真的以前学了和没学一样。
不过把很多以前遗留下来的问题解决了,还学习了两个新的背包(二维费用背包和分组背包)
比如背包问题的一维优化为什么要倒推,
考试也还可以吧,有些时候会发挥不稳定。(SBCENA)
最后一天考试上午觉得炸了,只会打T1,T2,
结果骗分骗到285(qwq)
下午自我感觉良好,1个小时解决战斗,自以为能AK,
结果130(qwq)
十分离谱
一些好题:
1.题目排版:
给出一个字符串,每次可以交换相邻的两个字符,求变成反串最少的操作次数。
谁能想到这是一个逆序对呢?
给每个字母标上号,找到反串中每一个字母在正串中第一次出现的位置(不重复)
然后求这个数列的逆序对就行了。
2.雨林:
现在,你来到了⾬林的⼊⼝。
⾬林的俯视图是⼀个矩形,建⽴平⾯直⻆坐标系后,⾬林的⼊⼝位于坐标(0,0)处,出⼝位于坐标(N,M)处。你可以在平⾯上的这个矩形内任意⾛动。因为你相对于⾬林很⼩,可以把你视为⼀个质点.然⽽,不幸的是,⾬林下起了⾬,⼀共有处落⾬区域,每⼀处⾬的落⾬区域在平⾯上都是⼀个圆 形,都有着⾃⼰的半径。这些区域可能有交集。 作为⼀个完美主义者,你希望能够在不沾到⾬⽔的前提下从⾬林的⼊⼝到达⾬林的出⼝。也就是说,⽆论何时,你与每个落⾬区域的圆⼼的距离必须严格⼤于该落⾬区域的半径.现在给出每处落⾬区域的圆⼼和半径,请问你能否在不沾⾬⽔的前提下从⼊⼝到达出⼝?
谁能想到这是一道搜索呢?
如果两个下雨的区间相交那么就把它们连起来,
将整块地图斜着分为两个部分,如果能从左边边界走到右边边界就把路都隔断了,就不能到达了。
3.区间和的分类:
给定一个数列,求有多少个区间满足和大于0,等于0,小于0?
谁能想到这是一道求顺序对&求逆序对呢?
先用前缀和维护一下,
再求逆序对&顺序对。
4.区间最大值求和:
给定一个数列,求每个区间的最大值的和?
谁能想到这是一道二分?
找到当前数列的最大值maxn,
就相当于有l*r个区间的最大值是maxn,
继续在左区间和右区间找最大值。
说实话,SD的题挺好的。