gym102586 部分題解

2022-04-07 20:40:02 字數 1559 閱讀 7590

目錄link

出於某種原因,本篇部落格不提供**。

考慮設 \(f(l,r,x)\) 表示當前詢問區間為 \([l,r]\), \(s\) 個人都訪問 \(x\) 時候的答案。

顯然是先列舉距離填滿帳篷,然後如果距離列舉到 \(\min\) 還沒放置完所有人,就全部跑到 \(l-1/r+1\) 去避難。

發現最後當 \(x\in[l,mid]\) 的時候到 \(l-1\) 避難,當 \(x\in[mid+1,r]\) 的時候到 \(r+1\) 避難。

這樣的話,當 \(x\in[l,mid]\) 的時候,最小代價跟 \(r\) 沒有關係,在 \([mid+1,r]\) 的時候同理。

設這個代價是 \(f_[l,x]\),我們要求 \(\max_^[l,x]}\)

這個問單個 \(x\) 可以通過預處理字首和做到 \(o(1)\),現在已經有了 \(o(n^2)\) 的做法簡直和暴力一樣優秀,顯然過不去。

但容易發現它滿足決策單調性,於是搞乙個線段樹+分治優化決策即可。

編了一年才知道**寫假了...

發現有遞推式 \(f_m=\sum\limits_^nf_a_i+1\),然後可以線性遞推出 \(f_...f_\) 關於 \(f_,f_...f_\) 的線性表示。

高斯消元解出 \(f_...f_\) 然後再跑一次線性遞推。

設 \(f(x)=\sum\limits_^nx^\),發現是求 \([x^s]f(x)^n\mod2\),然後會發現 \(f(x)^\equiv \sum\limits_^nx^\mod2\),然後壓位 dp 一下就完事了。

多測不清空,爆零兩行淚。

這個東西顯然有下界是 \(\sum\limits_^n|a_i-b_i|\), 然後開動腦筋構造出乙個符合條件的方案即可。

隨便構造一組斜率相近的直線。

發現題目中有個 \(\log\) 就開始想二進位制構造。

首先發現 \(\sum\limits_^\pm2^i\) 是可以湊出所有在上界內的偶數的。

然後這道題裡面把置換環的邊看成無向邊就非常好構造。

所以如果 \(n\) 是奇數,我們的第 \(i\) 個置換搞成 \(x\rightarrow x+2^i\mod n\),這樣在模意義下可以湊出任意值。

現在考慮 \(n\) 是偶數的情況怎麼修。

發現在所有操作完之後會改變奇偶性,於是需要建立乙個置換,使得奇數能變成奇數/偶數,偶數也是。

考慮每 \(4\) 個分一組,連邊 \(x\rightarrow x+2\rightarrow x+3\rightarrow x+1\rightarrow x\)

這樣就能搞定 \(4|n\) 的情況。

當 \(n\equiv2\mod 4\) 的時候,最後兩個沒法搞定,我們再隨便建乙個新的置換上去即可,比如對於前 \(n-4\) 個有 \(x\rightarrow x\),最後四個跟剛剛一樣構造。

直接暴力列舉點對算貢獻不是非常優秀,考慮優化列舉的點對數。

顯然能想到關於 \(y\) 座標進行分治。

經過簡單分類討論容易發現如果該點對有用,那麼一定至少有乙個點的權值在當前範圍內該顏色點中是最大的,於是總點對數是 \(o(n\log n)\) 的。

掃瞄線即可。

練習2部分題解

問題 g 汽水瓶 時間限制 1 sec 記憶體限制 128 mb提交 93 解決 45 201501010119 提交狀態討論版 題目描述 有這樣一道智力題 某商店規定 三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?答案是5瓶,方法如下 先用9個空瓶子換3瓶汽水,喝掉...

cqoi2015部分題解

只做了前三題。t1 選數 先把題目轉化為求選n個數最大公約數為1,不用說了。假定f i 為選出n個數最大公約數為i的方案數。由於題目中有條件h l 10 5,所以i 10 5即可。令l l 1 i,r h i f i r l n sigma f a i r l 最後的r l為減去全部選擇乙個數的方案...

PA2014部分題解

之前有一些寫過了大概扔在奇奇妙妙的地方 可能翻一下blog能翻得到的 瞎寫一下最近的題吧 2 242 224這個狀壓和爆搜尷尬的地位 90 s90s 90s果斷狀壓了 把包從大到小排序,記乙個pai rpair pair 的d p mask dp mask dp mas k 表示裝完狀態裡的這些東西...