| solved | A | B | C | D | E | F | G | H | I |
|---|---|---|---|---|---|---|---|---|---|
| 4 / 9 | O | · | · | · | Ø | Ø | · | · | O |
- O:比赛时通过
- Ø:赛后通过
- !:比赛时尝试了未通过
- ·:比赛时未尝试
A. Amateur Chess Players
solved by Tryna. 0:15(+)
题意:每个人可以每步拿走一个对应颜色的棋子,谁先取完谁输。
题解: 比较大小。
AC代码
1 |
|
E. Even Degree
solved by lllllan. (-)
题意: 给定一个无向图,题目保证没有重边,也没有孤立点,并且每一个节点都有偶数条边。要求每次只能从偶点上删除一条边。求最多可以删除多少条边,并按照删除顺序输出每条删除边的编号。
题解: 由于题目保证的所有点都是偶点,所以纸上随便找几个图画一下就知道肯定可以将一个连通图删剩下一条边。然后问题就来到了删边的顺序。
回顾一下最普通的输出欧拉回路的代码:关键在于先递归,后输出。这个代码的正确性我就不加证明了,不理解的可以自己百度。
1 | void euler (int u) { |
这题删边的操作也要如此,通过dfs递归,然后记录下一个删边顺序——但是此时会记录下所有的边【实际上只能删除条边】,需要我们增加额外的判断,按照一个顺序遍历想要删除的边,每次将两端节点的度数-1,遍历到某条边的两端点均为奇点,说明这条边不可删除,需要反向遍历之前记录下的想要删除的边,如此反复,直到只剩下一条边为止。【表述不清难以理解的的,直接看代码的solve部分】
solve部分的代码即保证了删除的每条边都来自偶点,删边的顺序可以有很多,但是直接按照欧拉回路的路径来删除就会简单很多。
AC代码
1 |
|
F. Find / -type f -or -type d
solved by Sstee1XD. (-)
题意: 给你所有文件的子目录,输出结尾为的文件数量。
题解: 前面的文件如果有扩展的话,就是一个文件夹,而非文件,所以我们用字典树就能很好地维护。(看到官方题解是sorting的我人直接没了,字典树调了一万年QAQ)。
AC代码
1 |
|
I. Idiotic Suffix Array
solved by Sstee1XD. 0:28(+)
题意: 构造一个长为字符串,使得其第一个字母的字典序最小,并且排序后在第k位上。
题解: 输出对应数量的即可。
AC代码
1 |
|