Loading

NOI Online 2020 Round 1 游记

Part I 比赛游记

Day 0

考前和同学们商量了 碰 面 地 点 —— hack.chat,第二天就可以享受 ACM 的快乐了。(事实上并没有)

8:25 - 8:40

不出意料地,比赛网址卡成了 &#@#!@#%!#$^%@,还好 wzx 巨神从隔壁群找来了题面先看着,不然又得白白浪费一些时间。直到 8:55 我才进入题目界面。

9:00 - 12:00

T1 乍一看有点像之前做的差分题,然而又不大一样。看到题目描述中的 \(u,v\),我逐渐怀疑这是出题人给的提示——转化成图论模型。于是尝试去思考,很快就有了一个思路,先把操作 \(2\) 所连接的各点缩为一个点,毕竟其中的数字和是守恒的,不增不减。然后只留下操作 \(1\) 的边来判断。

第一反应是重新建的图中只要任意连通块的和均为偶数就可以,然而成功被我自己的一个样例给 hack 了。于是我认为要特判当缩的点度数为 \(0\),必须要和也为 \(0\) 才可以,并且通过了自己的 hack 数据。然而考后发现需要特判的是二分图,FU**(粗鄙)。

由于我这个人写代码极慢,现在就只剩下一个小时 \(30\) 分钟了。没多考虑,我先把没怎么思考的 T3 特殊情况 20 给打了(事后证明这是一个极其错误的策略),然后剩下大约一个小时看 T2。

T2 一开始思路是树状数组+线段树。用树状数组求一开始的逆序对,用线段树维护并查询冒泡排序。但是遇到了一个问题—— \(k\) 轮冒泡排序该如何处理。显然不能直接模拟,并且肯定与逆序对有直接关联。然而我这个傻逼想了半天也没想到结论——事后证明就算我手推或者baidu都可以轻松推出结论,太草了。

问了下同学也都在忙自己的, woc 就只有打暴力了。

最后自测只有 \(100\) 分。显然这次如果发挥正常都应该拿到 \(200\) ,真的太草了(第二次)。

总结

  • 比赛策略问题。 虽然三道题难度差别不大,但还是有一点倒序排列的感觉。没第一时间找到最简单的题确实是一个失误,以后也必须注意,出题人不会像你想的那么友好按题目顺序难度递增。同时 T1 的 80 分可谓非常简单,然而自己却花了很长时间拿多的那 \(20\) 分最后还只得了 \(60\) 分,这也是不大应该的。

  • 时间分配问题。 显然这次 T1 耗的时间太长,以后写代码必须加快速度。同时也要注意时间,敢于取舍。

  • 善用搜索引擎。 啊呸。

Part II 考后重解题报告

Task A 序列

首先考虑转换为图论模型。操作 1 和操作 2 分别考虑。

对于操作 2,我们可以视为其中的数值可以随意「转运」。因此对于由操作 2 连接而成的一个连通块,我们可以视为其中的数字总和守恒。只需要将其缩为一个点权为这些数的和的点,将这个点与这个连通块通过操作 1 相连的其它点相连即可。

然后处理操作 1。不难发现,对于非二分图也可以随意「转运」数值,因此对于这种图只需要点权和为偶数答案即为 Yes。对于二分图,则只能在某一侧转运,因此这种图需要白点点权和等于黑点点权和才为 Yes。

Task B 冒泡排序

首先有一个结论,假设某个位置原先逆序对个数为 \(x\),而 \(k\) 轮冒泡排序后该位置的逆序对个数就会变为 \(\max(x-k,0)\),用树状数组维护即可。

Task C 最小环

贪心。比如 \(a_{n-1}\)\(a_{n-2}\) 必须与 \(a_n\) 相隔 \(k\) 的距离。一直排下去就好了。

posted @ 2020-08-02 14:02  Sqrtyz  阅读(156)  评论(0)    收藏  举报