GDOI2018游记&题解
day0
第一件事当然是去酒店入住+领一堆东西。
感觉酒店不错,而且离学校挺近的,走路10分钟不到,骑车5分钟就到了。
然后去学校吃饭。我们在教工饭堂吃饭,饭菜还不错,但是没有筷子差评。
吃完饭后找了一下附近的咖啡厅,然而并没有找到。
剩下的时间都在玩手机。
day1
有半个小时试机时间,就敲了三个板子(NTT,SA,LCT),结果一个都没用到。
开场先看A,发现是个傻逼题,10分钟切掉。
然后看B,想了一会感觉不会做,就跳过了。
接着发现C是傻逼题,一个小时写完+拍完。
D也想了一会想不出来,也跳过了。
这时候已经过了两个小时了。
后面两个小时都在死磕B题,想过两个DP,但都过不了拍。最后写了一个\(O(n^2)\)的DP。
出考场后问了一下B题怎么做,发现差分一下就是联赛题了。
我退役把.jpg
中午一直在玩手机。
下午讲评,D是一个数学+生成函数题,感觉这种题做四个小时都做不出来。
最终得分:100+60+100+0=260
题解
A:傻逼题不解释
B:差分之后就变成:有\(n\)个数,你每次可以把一个数\(+1\),同时把另一个数\(-1\),问你最少需要多少步才能让所有数\(\bmod m\)都变成零。排序+贪心就行了。
C:如果把所有的深度(插入&询问)加上时间的话,就是一个单点修改矩形求和的题了。CDQ分治+树状数组。貌似树套树也能过。
D:考虑缩点以后整个图会长什么样。假设有\(k\)个强连通分量,就一定存在一条长度为\(k\)的链。我们可以枚举这条链上相邻两个点的连边,那么这条边前面的连通分量连到后面的边的方向都是固定的。所以我们可以算出每一条边出现的概率,然后连通分量个数\(=\)上面的边数\(+1\)。
实际上是枚举这条边前面的点数。
\[
ans=\sum_{i=1}^{n-1}\binom{n}{i}{(\frac{1}{2})}^{i(n-i)}
\]
然后考虑有告诉你路径的时候要怎么做。
对于每条路径,我们可以枚举这条边是在这条路径的哪两个点之间,这样就有一个\(O(n^2)\)的DP了。
如果一条路径跨过了这条边,那么就会对上面那条式子有\(2\)的贡献(因为有一条边的方向确定,抵消一个\(\frac{1}{2}\))。
所以我们可以对于一条长度为\(k\)的路径列一个生成函数:\(1x^0+2x^1+2x^2+\ldots+2x^{k-1}+1x^k\)
设把这些生成函数乘起来后的生成函数是\(\sum_{i=0}^na_ix^i\),那么答案就是\(\sum_{i=1}^{n-1}a_i{(\frac{1}{2})}^{i(n-i)}\)
day2
开场先看A,果然是一道最短路题(话说d2t1除了最短路&BFS还出过什么?)。不过感觉到了出题人深深的恶意,因为把莫比乌斯反演强行塞进了一道签到题。
做完之后去看B,发现是一道套路题,可以直接二项式展开,也可以变换一下变成组合数。
然后。。。就发现C和D一道都不会。
在思考了半个小时后,想到了D的正解之一。很不幸的是,我找了几个看上去这个算法会错的数据把这个算法叉了,就把这个算法扔掉了。最后写了一个暴力。
最后一个小时一直在思考第三题,突然想到可以枚举\(h\),找满足条件的\(x\)在那个区间内。接着发现数据随机,就写了一个两个\(\log\)的线段树做法。本机测了一下极限数据,跑了\(6\)秒,应该是过不了的。
中午还是一直在玩手机。
下午讲评前听说C大常数两个\(\log\)做法过了,觉得很不可思议。
最终得分:100+100+100+50=350
题解
A:求两点之间的边权可以用莫比乌斯反演,然后二分+最短路。
\[
\begin{align}
&\sum_{i=1}^n\sum_{j=1}^mi+j[\gcd(i,j)=1]\\
=&\sum_{d=1}^{\min(n,m)}d\mu(d)(\frac{n}{d}S(\frac{m}{d})+\frac{m}{d}S(\frac{n}{d}))\\
S(n)=&\sum_{i=1}^ni
\end{align}
\]
B:可以直接二项式展开+DP,也可以推一下式子变成
\[
\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}i!\sum_{S\subseteq V}\binom{f(S)}{i}
\]
然后还是DP。
后面这个做法可以优化到\(O(nk)\)
C:可以发现求答案的过程就是在笛卡尔树上面跳,因此可以暴力维护笛卡尔树。因为数据随机,所以树高和 子树大小的期望都是\(O(\log n)\)
D:以\(x\)为起点跑一棵最短路树。那么最小环一定只经过一条非树边。
直接处理出每个点在\(x\)的哪棵子树内,然后枚举那条非树边。
最短路可以用不加堆优化的dijkstra,因为是稠密图。
day3
今天在电子阅览室考。
开场先看A,题目说的是二维偏序,但我脑子里想的一直是三位偏序。我只会\(\log^2\)的做法,很明显会MLE,就跳过了。
然后看B,感觉不太好做,也跳过了。
然后发现C是个水题,就花了30分钟切掉了(我在试机的时候写过一个SA模板,直接搬过来用了)。
做完C之后突然发现A是二偏维序,也花了30分中去写+对拍。
接着就一直在搞B,写了个两个\(\log\)的做法,推了好久的式子+一堆细节。
写完前三题只剩下一个小时了,就开始思考第四题,发现无法理解题目。问了评委,评委让我仔细阅读题目。
那我也没什么办法啊。。。就一直盯着题目猜题意,过了几分钟才看懂。但是已经没时间写正解了。就写了个 暴力。
下午发现B的后面5个点挂了,而且第一问都是错的。
我也很绝望啊。。。明明都拍上了。。。
UPD:问题找到了,有一个求子树内点数的地方加了一个取模。。。
最终得分:100+50+100+20=270
为什么出题人那么喜欢出NOIP三合一啊。。。
题解
A:\(O(n^2)\)做法是tarjan求强连通分量。正解是用线段树优化建图。
B:第一问就是求重心,第二问只需要求出一个点的子树内所有点到这个点的距离和,可以DP或者用其他方式搞一搞。
C:求有多少条不同的路径就是求整个图的最大流,求答案可以二分+哈希或者把每个猴子的串排序后求第\(k\)小的相邻两个之间的LCP。
D:先用tarjan把所有小岛找出来,再用树型DP求直径,最后用DP求分拆数(五边形数定理)。
总结
这次比赛暴露了许多问题。
1.在想一道题时如果往一个方向想了很久也做不出来,不妨换个思路。
2.要积累一些常见的容易忽略的道路,如:差分,分块,二分答案等等。
3.在想到一个做法后不要轻易地否定这个做法,一定要确保这个做法一定是错的再扔掉。如果有时间不妨实现以下,可能修改一些小的细节之后就正确了。
4.其实第一点和第三点有一点矛盾,所以你要想规划好每道题要花多少时间去想。我给自己的时间是半个小时,想不出来/改不好就换题或换思路。
5.写题速度不够快,第三天出现了会正解但写不完的情况。
6.很多要取模的题可以在对拍的时候换一下模数(比如说换成特别小的模数),以检验是否有不该取模的地方加了取模,该取模的地方没有取模。
GDOI2018游记&题解的更多相关文章
- 「CSP-S」2019年第一届Day1游记+题解
「CSP-S」2019年第一届Day1游记+题解 Day 1 7:30 A.M. 8:10 A.M. 8:30 A.M. T1 格雷码 题目 考场经历+思考(正解) 8:50 A.M. T2 括号树 ...
- GDOI2018游记
前言 不知怎的,本蒟蒻居然拿到了GDOI参赛名额 于是乎,我稀里糊涂地跟着诸位大佬屁颠屁颠地来到了阔别已久的中山一中 腐败difficult and interesting的GDOI比赛就这样开始了. ...
- 2020.3.23 模拟赛游记 & 题解
这次的模拟赛,实在是水. 数据水,\(\texttt{std}\) 水,出题人水,做题人也水.??? 游记就说一句: 水. T1 metro 弱智题. 人均 \(100pts\). #pragma G ...
- P5290 [十二省联考2019]春节十二响
题目地址:P5290 [十二省联考2019]春节十二响 骗分方法 如果你实在一点思路也没有,暴力都不会打,那么请考虑一下骗分. 方法一 输出所有 \(M\) 的和. 期望得分:0分. 实际还有5分 方 ...
- NBL小可爱纪念赛「 第一弹 」 游记(部分题解)
比赛链接 洛谷:禁止含有侮辱性质的比赛 . ??? 反正我觉得,gyx挺危险的 不说废话. 首先,比赛经验,前几个小时不打,跟着刷榜. 一看 T1. 发现是道水题,直接切掉了. 然后看到了 T2. 感 ...
- NOIP2016游记(非题解)
去年的比赛现在来发是不是晚了. -------------------------------- Day1-白天 出发啦, 动车购票处一群丧病的又在玩售票机 动车上看到胡神打苍蝇 苍蝇打苍蝇 在车上颓 ...
- 「浙大ACM」图森未来杯游记一篇以及简易口胡题解
前言 蒟蒻有参加了ACM比赛,这一次有适合HY和慕容宝宝大佬一起比的,他们好巨啊,把我带飞了. 又是窝掌机,QAQ,他们仗着自己巨,就欺负窝... 我又打了\(4\)个小时的代码,而且那个键盘太恶心了 ...
- CTSC2016&&APIO2016滚粗记&&酱油记&&游记<del>(持续更新)</del>
挖一波坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs. ...
- 2019余姚培训游记+ZJOJD2划水记
2019余姚培训游记 突然就想写一个... 注意:以下全是胡言乱语的自high,还有很多错别字 Day 0 来的比较早,早上就到了 上午把一本小说看完了,是一个年轻作者的处女作. 我觉得我第一本书一定 ...
随机推荐
- [python爬虫]Requests-BeautifulSoup-Re库方案--Requests库介绍
[根据北京理工大学嵩天老师“Python网络爬虫与信息提取”慕课课程编写 文章中部分图片来自老师PPT 慕课链接:https://www.icourse163.org/learn/BIT-10018 ...
- selenium chrome在新标签页打开链接的方法
目前chrome是我在实现webdriver时运行最稳定的浏览器,如何利用webdriver打开多个标签页和链接呢,到处查找得到的往往只是如何打开标签页.打开标签页很简单,chrome浏览器打开标签页 ...
- ARM汇编指令集_学习笔记(1)
一.什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编. C程序运行在X86平台,底层就是X86汇编:运行在ARM平台,底层就是ARM汇编.ARM汇编与X86汇编有显著区别. X86属于 ...
- 二、IPC机制
1.Android IPC简介 IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程. ANR:Applicatio ...
- org.springframework.beans.factory.NoUniqueBeanDefinitionException 导致原因之一
导致此异常原因很多,以下仅是针对其中一种因素的解决办法. 下面是DAO接口.Service接口.Service实现类的全路径名(全部定义在com.xxx.projetc包下) com.xxx.proj ...
- Linux内核高端内存
Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存. 段页式机制如下图. Linux内核地址空间划分 通常32位L ...
- Linux垃圾清理
一.删除缓存 1,非常有用的清理命令:sudo apt-get autoclean 清理旧版本的软件缓存sudo apt-get clean ...
- dynalist 配额
2018-8-29 dynalist 配额 提示有一个G的配额 就是使用的流量用光了.仅有1个G
- ansible学习基础知识和模块(一)
基础知识补充: 常用自动化运维工具 Ansible:使用python来开发的,无需设置Agentless(代理),一般管理几百台.与ssh的方式也不一样,ssh是基于c/s模式(客户端+服务器)来使用 ...
- LeetCode算法题-Convert BST to Greater Tree(Java实现)
这是悦乐书的第255次更新,第268篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第122题(顺位题号是538).给定二进制搜索树(BST),将其转换为更大树,使原始BS ...