比賽地址數組
題意:給一個\(n*m\)的初始爲白色的矩陣,一次操做能夠將一行或一列染成
黑色,問至少染出\(k\)個黑點的最少操做次數。
\(n\),\(m\)<=100,\(k\)<=1e4spa
題意:有\(n\)條線段,用二元組\((x,len)\)表示,佔據\([x-len,x+len]\)的位置。
問最多能選擇多少條不相交的線段。
\(n\)<=1e5,\(x_i\),\(len_i\)<=1e9code
題意:給定\(n\),\(k\),\(s\),構造一個序列\(a\),使得剛好有\(k\)個二元組\((l,r)\),\(\sum_{i=l}^{r} a[i]\) = \(s\)。
\(n\)<=1e5,0<=\(k\)<=\(n\),\(s\)<=1e9,\(a_i\)<=1e9排序
題意:有\(n\)張卡片,初始時每張卡片上面是\(a[i]\),下面是\(b[i]\)。一次操做能夠交換相鄰兩張牌,
並將這兩張牌翻轉。最小化操做次數,使得上面的數組成的序列不降。
\(n\)<=18,\(a_i\),\(b_i\)<=50get
題意:給定一個\(n\)點\(m\)邊的無向圖,每一個點能夠被染成黑色或白色,每條邊能夠指定一個[1,1e9]之內的權值。
找出一種染色和給定邊權的方案,使得:
1.至少存在一個黑點,一個白點;
2.每一個點到與其最近的顏色相異的點的距離爲\(d_i\)。
\(n\)<=1e5,\(m\)<=2e5,\(d_i\)<=1e9入門
題意:有一個\(n*m\)的矩陣,初始時每一個點都有一個顏色。
你能夠對其進行任意次操做,每次操做能夠任選一行(列),將這一行(列)的點全染成黑(白)色。
問共能操做出多少種不一樣的矩陣。答案對998244353取模。
\(n\),\(m\)<=10class
入門題。根據\(n\),\(m\)大小判斷染行仍是染列。
時間複雜度:\(O(1)\)test
經典的貪心問題。將全部線段按右端點排序,直接掃一遍,維護一下當前選到的右端點就好。
時間複雜度:\(O(nlogn)\)im
\(傻逼題\)。直接指定\(k\)點權值爲\(s\),剩下的都爲\(s+1\)就行。注意\(s\)=1e9須要特判。
時間複雜度:\(O(n)\)移動
\(n\)很小,引導咱們能夠用指數級別的複雜度作題。首先能夠想到暴力枚舉全部牌最後哪邊朝上。
考慮如何斷定一個方案是否合法,並判斷其最小的移動步數。
咱們將這個狀態設爲\(S\),它的第\(i\)位爲1就表明它是\(b_i\)朝上,不然是\(a_i\)朝上。
1的個數必定是個偶數。
咱們根據這個01序列,能夠獲得最終的一個無序序列\(C\)。將這個序列排序,如今要作的就是
找一個合法的匹配方案。
可能讀者會有些疑惑:這裏爲何還要判斷是否合法呢?
考慮那個01序列的另一層意義:若是某一位爲1,那麼這一位的這張牌就移動了奇數次,不然就是偶數次。
這個東西分奇偶討論一下,用vector存一下全部\(c_i\)\(的全部出現位置,一一匹配就行。 因爲\)C\(中可能有重複元素,最優策略就是原序列中左邊的點儘可能和排序後的\)C\(的左邊的點匹配。這個是顯然的。 這樣,咱們就至關於獲得了一個排列\)P$,表示一種匹配方案。
那麼肯定這個方案合法後,如何求出最少的移動步數呢?能夠發現這就是這個排列的逆序對個數。把它算出來,更新答案。
時間複雜度:O(\(2^n\) \(\times\) \(n^2\))
考慮從何下手這個問題。
首先,咱們確定但願這個最短路儘可能好求一些。最好是全部的匹配都是兩點直接相連的。
固然事實確實是這樣的。這裏給出一個證實。
考慮反證法:若是存在一種匹配方案\(a->c\),\(b->c\),\(a\),\(b\)是黑點,\(c\)是白點,且這三點的連邊狀況是:\(a---b---c\)。
首先,若是\(b\)和\(c\)匹配,那麼\(a\)不會和其餘點匹配。
\(d_a\)<\(d_b\):顯然這種方案是不合法的;
\(d_a\)>=\(d_b\):顯然能夠將\(b\)換成白點,\(c\)換成黑點(不換也行,具體看狀況)。
所以,如有解,必定存在一種匹配方案,使得全部點都和它直接相連的一個點匹配。
接下來,考慮這樣的一個匹配過程:
一個節點\(A\)找到了另外一個節點\(B\),與其匹配。那麼那個節點\(B\)有兩種選擇:一是和\(A\)匹配,一是和其餘節點匹配。
重點是,不管如何匹配,\(d_B\)必定大於等於\(d_A\)。
由此下去,必定有一個最終狀態,節點\(B\)別無他選,只能和\(A\)匹配。咱們發現了隱藏在題目中的單調性。
由此,咱們獲得了一個作法:先將全部節點按\(d_i\)從小到大排序,而後對於每一個節點,
先找有沒有與其直接相連的未被染色的點,且二者的\(d\)相同。如有,則兩點互相匹配,若沒有,再找一個已被染色的點,
與其匹配便可。若尚未,則無解。
注意必定要先找能互相匹配的點,由於一次能夠染兩個節點的色。
時間複雜度:\(O(nlogn+m)\)
待填坑~
先咕在這裏,等寫完F再放吧~