https://cms.ioi-jp.org/ranking/Ranking.html
https://loj.ac/problems/search?keyword=joisc+2020
https://blog.csdn.net/zhouyuyang233/article/details/105010508
打的很差。
Day 1
。C还会分。
A
我竟然做了。。swk开局就秒了。
我在的时候其实想到了,但是比较模糊,否定了。
先从左往右尽力匹配,然后再从右往左依次贪心考虑是否调整。
1 | #include <bits/stdc++.h> |
B
只会分。
ouuan写了随机化得了,好厉害。。
C
我现场会前三个subtask。第三个写不完了。
方法(https://blog.csdn.net/qq_39972971/article/details/105074209):
考虑没有插入的情况,但凡被影响过一次,一定满足subtask3的限制!
简要的说明,就是每做一次操作,点都至少在那个矩形的边界上,感性理解一下。
至于有插入操作,可以直接在外面套一个线段树分治,来保证操作一段区间的时候,这些点不会中途插入。。
我的提交:https://loj.ac/submission/776068
方法2
UOJ上有有关提交。。
方法2既好写又好调qaq。。
Day 2
A
凡是交互题,大抵都很可能与二分有关系。可我没想到。
询问两个点,如果是连一条边。那么每个点的度数要么要么。
连边以后,怎么匹配可以很容易的判断。
先想到做法。然后考虑,这张图原来是个二分图!
看看代码大抵就懂了,大概是用并查集暴力维护是男还是女。
1 | #include <bits/stdc++.h> |
B
把有双向边的并起来。大力维护就行了。
1 | #include <bits/stdc++.h> |
C
真是一道神仙题,感觉是非容斥题里面非常难的一种题了。
步骤:
考虑问题的本质。
属于先确定一些,别的到时候再确定的dp。
https://blog.csdn.net/qq_39972971/article/details/105074251
1 | #include <bits/stdc++.h> |
Day 3
三题都不会,。
绝大多数人秒了。sddz们都会。
A
先建笛卡尔树,然后线段树合并就行了。
我真tm弱。赛后告诉我建笛卡尔树就有点会了。
黑色部分最短的当做根。表示树上第个节点,子树中黑色部分高度最小的点是的最优答案。
线段树合并就完了。
1 | #include <bits/stdc++.h> |
B
还不很会。讲一讲看别人题解的大体思路。
https://blog.csdn.net/qq_39972971/article/details/105100433
先把这玩意建成基环森林,按找谁摘了苹果后,下一个摘这个苹果的人是谁。
然后树上的可以离线线段树。就在一个区间里,出现时间小于等于一个数的苹果数,就是个二维偏序。
环上的也许也可以类似处理,感觉就是很麻烦。
C
前分so easy。
如果一个点度数是很好,就把往根的路径和别的路径区分开就行。
一条链不舒服。
构造串,保证走三步以后能确定方向回到原点。
据说不是很好写。
这样的题竟然可以构造。。好妙。
Day 4
。写了假做法。三题都不会。
A
tmd为什么我写了并查集!!!明明全图都是单向边!
我的图论那么差吗!
方法:考虑把一个颜色的虚树建出来。那么要向中间那些点连单向边。就有强连通分量+倍增建边什么的了。
方法2:考虑如果钦定一个点为根必须选,那么一个点选了,他父亲一定选。所以直接考虑点分,点分中心选不选。
1 | #include <bits/stdc++.h> |
B
提答,压根没看。
C
赛场上没看。
赛后看了题解,感觉这题就和noi2019d2t1好像。那题我现场很容易的过了(对拍完了)。这题却毫无思路。
真的挺秒的,不是按时间升序建边,而是按照从左到右覆盖建边的。
可以看一下zhouyuyang的博客。
1 | #include <bits/stdc++.h> |
总结
感觉一天一题才有希望进省队啊。
但我还差一些,但是也不是太多。
总体而言,打的非常差。