CSPS模擬 65


  cbx又A兩題%%%

 

  T1比較水,只需要想到lcm以內的數都只能被唯一湊出就可以。

  T2比較shi,畢竟std復雜度都不正確的題是不能稱之為完整的題的。

  那么再感受一下T3滿滿的惡意

  

    起點已經固定了,考慮當終點也固定時該怎么花費最小代價

    一般的情況是,s和t都不在端點上,而端點又必須到達過,那么不可避免地,st兩側的邊都被覆蓋兩次

    而且發現這兩側的邊,都可以在不增加代價的情況下隨意改變行動方向,所以覆蓋兩次就行了,沒必要覆蓋第三次。

    為了方便描述,如果s在t的左邊(右邊的話就把序列翻過來)

    那么大概的方向就是:向左先踩掉左端點,向右踩掉右端點,回過頭到達t

    那么在兩側的邊(1-s和t-n)什么方向都可以,也就是有n-t+s-1次花掉強制次數L的機會

    如果L<=那個次數,直接安排在兩邊什么地方就行了,注意左端點必須到達,必須分配一個;右端點向左跳到t至少用一次(如果t!=n),必須分配一個。

    L>那個次數,只能從s和t之間選一些邊,讓s到t向右走的過程中,先跳到這些邊的右端點,再向左跳花掉L,然后正常向右。

    先求出最優的t,最后再跑一次構造一個解。

    

    先發出去,還要補一些奇怪的想法。

 

    upd:改題時以及寫這篇隨筆時一些奇怪的想法:

      1.把序列翻過來以后,L的值就不是L了,而是n-1-L,總感覺哪里不對勁,主要是L的過量、不足關系的判定上好像不夠直觀了,改題時猜想這樣是對的,現在發現自己懵逼了。應該是沒有問題,比如考慮s>l的情況,t>s時無論如何l都不會過量,而反過來后n-l-1則很容易就過量,好像冥冥中比較符合實際

      2.在給st兩邊的線段強制分配次數的時候,應該考慮L不夠分的情況。如果s不在端點,t就必須在端點。我在代碼里特判了L==1的情況,不知道如果不特判能不能在第一問直接把t!=n的方案濾掉

      3.給兩邊分配次數時,給1-s分從1開始分到s,給t-n分從t開始分到n,構造的時候則反過來行動,即后走左向邊。感覺這樣具有比較好的包容性

      4.構造t>s的方案時可以與s<t的並在一起,只要把s和tswap一下,然后壓棧時把s也壓進去,那么棧頂和棧底一定分別是s和t,只要在外面判斷一下是從2輸出到n還是從n-1輸出到1,感覺這樣構造比較好,雖然還是非常難打。

 

    uupd:上一個upd的2好像不行..把特判刪了段錯誤到飛起..

      大概是因為只有l>1的時候,才能保證任何時刻要從堆里取出一個邊的時候,堆里都已經有一條邊..

      這樣L或n-1-L的限制都不會大於n-2,在t拓展兩次之前都不會要求從中間找邊,給了堆足夠的准備之間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM