暑期集训第一场欧拉回路 | 思维 | 数论构造 | 容斥原理 | 线段树 | 归并排序
Posted 403 Forbidden
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暑期集训第一场欧拉回路 | 思维 | 数论构造 | 容斥原理 | 线段树 | 归并排序相关的知识,希望对你有一定的参考价值。
集训1(HDU2018 Multi-University Training Contest 2)
ID | A | B | C | D | E | F | G | H | I | J |
---|---|---|---|---|---|---|---|---|---|---|
AC | O | O | ||||||||
补题 | ? | O | ? | O |
代码 & 简易题解
[A]:期望?
神仙题,留坑..
[B]:??
同\(\text{A}\)
[C]:求欧拉通路条数,以及每条的路径
小学数竞里有讲过,无向图一笔画的充要条件是有零个或两个“奇点”(偶点个数不限),“奇点”在这里就是指度为奇数的点...
其实上面两种情况就分别对应着欧拉回路和欧拉通路,并且如果把两个奇点连起来的话欧拉通路就变成欧拉回路了。
于是我们考虑本题应该也可利用这种思路。对于至少有 \(2\) 个点的无向连通块,如果它有 \(2*k\) 个奇点(注意奇点必有偶数个,因为每条边可看做贡献了两个度,所以总度应该是偶数,而偶点不管有多少个他们的总度都是偶数,所以奇点的总度也应该也是偶的,所以奇点就必须有偶数个),那么我们把这 \(2*k\) 个奇点任意两两连接就可以使这个连通块不含任何奇点,也就成为一个欧拉回路了。找到欧拉回路后,再断掉这 \(k\) 条新增的边,就得到 \(k\) 段欧拉通路,也就得解了。
当然,如果这个连通块只有一个点,那就特判一下,此时不存在欧拉通路。
\(\text{AC}\) 代码:
[D]:思维
两个人玩游戏,轮流每次从 \(\{1, 2, 3, ..., n\}\) 的集合中选一个数,然后把集合中存在的这个数的所有因子剔除(包括自身),如果某个人无法再操作(面对?)则输掉游戏,问是否先手必胜?
答案是肯定的。若 \(n==1\),那显然先手必胜。若 \(n>1\),先考虑 \(\{2, 3, ..., n\}\),如果面对这一批后手有必胜策略,则加上 \(1\) 之后先手者第一步拿 \(1\),那么就先手必胜了;而如果先手者对 \(\{2, 3, ..., n\}\) 已经有必胜策略,那么算上 \(1\) 后还是按原来必胜策略来即可必胜,因为先手者不管拿什么非 \(1\) 都会拿走 \(1\)。
\(\text{AC}\) 代码(C):
main(){while(~scanf("%*d"))puts("Yes");}
[E]:数论构造
\(\text{AC}\) 代码:
[F]:容斥
[G]:线段树
[J]:思维+归并排序
补题方案
E、G 较简单,赛后应马上补上。
C、F 属于常见知识点,也应尽快补上。
其余
神仙题...待进一步提升实力后再回来填坑吧QAq
总结
- 死磕没有结果时,应该去跟榜...
实在是菜的一笔>A<
好好补题吧
集训1(HDU2018 Multi-University Training Contest 2)
ID | A | B | C | D | E | F | G | H | I | J |
---|---|---|---|---|---|---|---|---|---|---|
AC | O | O | ||||||||
补题 | ? | O | ? | O |
代码 & 简易题解
[A]:期望?
神仙题,留坑..
[B]:??
同\(\text{A}\)
[C]:求欧拉通路条数,以及每条的路径
小学数竞里有讲过,无向图一笔画的充要条件是有零个或两个“奇点”(偶点个数不限),“奇点”在这里就是指度为奇数的点...
其实上面两种情况就分别对应着欧拉回路和欧拉通路,并且如果把两个奇点连起来的话欧拉通路就变成欧拉回路了。
于是我们考虑本题应该也可利用这种思路。对于至少有 \(2\) 个点的无向连通块,如果它有 \(2*k\) 个奇点(注意奇点必有偶数个,因为每条边可看做贡献了两个度,所以总度应该是偶数,而偶点不管有多少个他们的总度都是偶数,所以奇点的总度也应该也是偶的,所以奇点就必须有偶数个),那么我们把这 \(2*k\) 个奇点任意两两连接就可以使这个连通块不含任何奇点,也就成为一个欧拉回路了。找到欧拉回路后,再断掉这 \(k\) 条新增的边,就得到 \(k\) 段欧拉通路,也就得解了。
当然,如果这个连通块只有一个点,那就特判一下,此时不存在欧拉通路。
\(\text{AC}\) 代码:
[D]:思维
两个人玩游戏,轮流每次从 \(\{1, 2, 3, ..., n\}\) 的集合中选一个数,然后把集合中存在的这个数的所有因子剔除(包括自身),如果某个人无法再操作(面对?)则输掉游戏,问是否先手必胜?
答案是肯定的。若 \(n==1\),那显然先手必胜。若 \(n>1\),先考虑 \(\{2, 3, ..., n\}\),如果面对这一批后手有必胜策略,则加上 \(1\) 之后先手者第一步拿 \(1\),那么就先手必胜了;而如果先手者对 \(\{2, 3, ..., n\}\) 已经有必胜策略,那么算上 \(1\) 也不造成任何影响,因为先手者不管拿什么都会拿走 \(1\)。
\(\text{AC}\) 代码(C):
main(){while(~scanf("%*d"))puts("Yes");}
[E]:数论构造
\(\text{AC}\) 代码:
[F]:容斥
[G]:线段树
[J]:思维+归并排序
补题方案
E、G 较简单,赛后应马上补上。
C、F 属于常见知识点,也应尽快补上。
其余
神仙题...待进一步提升实力后再回来填坑吧QAq
总结
- 死磕没有结果时,应该去跟榜...
以上是关于暑期集训第一场欧拉回路 | 思维 | 数论构造 | 容斥原理 | 线段树 | 归并排序的主要内容,如果未能解决你的问题,请参考以下文章