【题解】NOI Online(2020-03-07)

Online [[NOI Online]sol(by zjc).md](../friend/[NOI Online]sol(by zjc).md)

序列(sequence)

sequence sequence.cpp

首先可以注意到,操作2不改变其\(\sum a_i\),任何操作都不改变其\(\sum a_i\)的奇偶性。

(其次,显然只需要考虑\(c_i=a_i-b_i\)的值即可,目标即为\(c_i=0\)

测试点 1 - 5

显然,当且仅当\(c_1=c_2\)时有解。

测试点 6 - 10

显然,当且仅当\(c_1+c_2=0\)时有解。

测试点 11 - 12

若同时有操作1和2,则当且仅当\(c_1+c_2\)为偶数时有解:

  • 先用1操作使得\(c_1+c_2=0\),此时可用2操作使得\(c_i=0\)

测试点 13 - 16

将一个\((2,u,v)\)看做一条无向边\((u,v)\),考虑一个连通块:

  • 若这个连通块内的\(\sum c_i\ne0\),则无解。
  • 否则,则有解。(解可以通过在其生成树上DFS构造。)

测试点 17 - 20

考虑所有操作2的边形成的图,先将所有连通块缩成点,则原问题可化归成所有\(t_i=1\)的子问题。考虑操作1的边形成的图:

  • 考虑一个连通块,若其无环,则可以DFS地判断是否有解。

    实际上,有解的充分必要条件即为\(\sum_{黑色}c_i=\sum_{白色}c_i\)

  • 若该连通块有环(边数大于等于点数):

    • 考虑特殊情况:该连通块为一个环。发现只要满足\(\sum c_i\)为偶数即有解。

      批:这一步错了。若为偶环,黑白染色后,要求\(\sum_{黑色}c_i=\sum_{白色}c_i\)才有解。这是因为每次操作必定操作一个白色点和一个黑色点,使得\(\Delta\sum_{黑色} = \Delta\sum_{白色}\)

      • 这是因为,对奇环而言,总有一种方案,可以先使所有\(c_i\)为偶数,再通过多个一系列操作,每次使得\(|c_i|\)减少2。
    • 其他情况,类似可知只要满足\(\sum c_i\)为偶数即有解。

      批:这个结论也有一点问题,仅仅对于奇环才成立。

      对于偶环,同样只需要考虑\(\sum_{黑色}c_i=\sum_{白色}c_i\)才有解。

      • 考虑生成该图的一个基环树,对所有子树DFS求解,再求解环即可。

可以发现对\(u_i=v_i\)的边,以上结论也成立。

冒泡排序(bubble)

bubble bubble.cpp

  • 10:23写完代码,过了样例。

首先,可以注意到一个结论:

结论

对于一个数\(x\),记它的逆序对\(inv[x]\)个数为数列中在它之前,且大于它的数的个数。则每一轮冒泡排序之后,若\(inv[x]\)大于\(0\),则其变为\(inv[x]-1\)

正确性应该比较显然吧……

算法

考虑题目要求:

  • 对于一个询问,答案即为\(\sum \min(inv[x]-k,0)\)
  • 对于一次修改,它会使得恰好一个\(inv[x]\)变化\(1\)

\(b=inv\)排序,则对一次修改,相当于将一个数减一/加一,可以对适当位置的数操作使得\(b\)序列仍然有序。

对于一次询问,则相当于求一个\(b[x]>k\)的后缀的长度以及其和,树状数组维护即可。

最小环(ring)

ring ring.cpp

我猜这是个结论题……

  • 10:30开始写暴力。
  • 10:41感觉和我猜的结论一样……写个对拍试试?
  • 11:20完成简单算法的实现,感觉跑的挺快。

需要注意的地方(?):当\(n=2,k=1\)时,和为\(a_1a_2\),非\(a_1a_2+a_2a_1\)

猜的结论

\(k=1\),不妨设\(a_i\le a_{i+1}\),则最优排列为\(\dots,a_{n-1},a_n,a_{n-2},a_{n-4},\dots\)。为什么?……不知道,不会证。

\(k|n\),则可以划分为\(k\)个子问题。第\(i\)个子问题相当于将\(a_{(i-1)k+1}\)\(a_{ik}\)排在环上(这个比较显然吧……)

否则,令\(k'=\gcd(k,n)\),则原问题等价于\(k'\)的情况。

简单算法

对每个\(n\)的因数,都暴力求一遍……

复杂度\(O(n\sigma_0(n))\subseteq O(n\sqrt n)\)。(似乎\(\max \sigma_0(n)=\sigma_0(166320)=160\)……感觉没什么问题?)

posted @ 2021-05-20 21:01  frank3215  阅读(108)  评论(0编辑  收藏  举报