倒数第三场 今天的题终于不再是全水题了
首先蒟蒻总结 照例%%%一波
第一题
模型很眼熟(shu),好像是前几天搞过的 记得是二分答案
很简单
第二题
看题面,哇咧水DP 又是一道送分题
再看数据规模
对于30%的数据,1<=n<=20,且测试点中只有一组数据;
另外40%的数据,1<=n<=1000。
对100%的数据,1<=n<=100000,0<=L,Ai<=10^9。
我屮艸芔茻,10^6次方,不怎么可做啊
第三题
给定1到N的一个排列,再给定一些允许的交换方法,要求用最少的交换次数把该排列变为1,2,3,,,N。
如果不给交换方法那就是一题逆序对大水题
好像没什么想法,DP贪心都显然不可做**
直到我看到数据范围
N(1<=N<=12)和M(1<=M<=N*(N-1)/2),
12的话不是压位就是搜索 然后..
mdzz这不就是迭代加深搜索吗
第四题
树,然后求一条嚒嚒虫
一开始想打树链剖分成线段树,给他的父亲区间标记再查询最大值,愣了5分钟有发现其实有更简的做法
对于一个点X,他的儿子a b c,那么对于X这颗子树来说有三种情况
1. 这条毛毛虫在某一颗子树里
2. 这条毛毛虫再某两颗子树里
3. 这条毛毛虫的一端在x这颗子树里,且通过x连向其他子树
4. 毛毛虫和这颗子树没关系
这就很简单了,其实只需要考虑第3种与第2种
这样的话对于X我们记录一下子树的最大与次大,考虑一下第二种情况然后把最大当做这颗子树的f传回去就可以了
美其名曰树形DP 其实就是一个大贪心
看起来能切1 4题
9:30
第一题打到一半发现,二分剪枝几乎无用
连忙换方法, 当我们确定最小边为X的时候我们去求其下界为X的最小生成树即可
,这样N=100就直接NM过了
第三题想到一个玄学优化
看起来优化效果很不错,本来只能过ans=6的,加了能过ans=8
搞完第三题已经十点半了,连忙开打
打到11:20就好了,再调了一波样例和大数据 再读几遍程序就丢在一边了
搞第四题的时候infleaking猛然发现第三题是双向BFS 这时候还剩40分钟,于是他就开始敲了..
以我的debug速度敲完是不可能的了,还是相信我的迭代加深+玄学优化吧
再回过头搞第二题
发现其实DP的时空复杂度与l无关 都是n^2的, 然后又发现
对于30%的数据,1<=n<=20,且测试点中只有一组数据;
另外40%的数据,1<=n<=1000。
另外40!!! 也就是说dp有70分!!!
很好连忙开打
打剩5分钟好了,调一波样例对了就交了
结果 估分
240 270+???
100 100
20 70
80 ??? 玄学
40 100
第一题 不出意外的切了 (这句话好耳熟)
第二题 什么情况? 至今没搞懂 可能是因为没拍大数据…
第三题 很爽 只T了两个点 玄学剪枝给我多get到了40分,看来多想想还是很值的
infleaking的双向BFS居然结束前30s调完了!
WA一个点 T一个点,不过是hash表的问题, 于是我还是要再打一遍双线bfs.. 这很不科学
第四题 是边集数组又忘开两倍了! ***********我** 这还是自己的锅不能怪C++… 下次如果能出极限数据就出一个试试看吧
好玩的是第一题除了我和waterking 居然所有人都忘了输出-1 , 于是就这种剧情
只有我们两个切了