水题杂做(
前言
平時閑的無聊寫的或者口嗨的水題就不水博客了。
CF1545A AquaMoon and Strange Sort
題意
給出nnn個數字的一個序列,每次可以交換相鄰的兩個數字,求是否能夠將序列從小到大排序且每個數字被交換次數為偶數。
n≤105n\leq 10^5n≤105
解題思路
其實就是每個數字的奇偶位置不能變,按照奇偶位置排序然后判斷是否有序即可
[USACO15OPEN]Palindromic Paths G
題意
n?nn*nn?n的字母矩陣,求有多少條從(1,1)(1,1)(1,1)出發只向右和下走的路徑滿足經過的路徑是一個回文串。
n≤500n\leq 500n≤500
解題思路
兩頭同時出發,設fi,j,kf_{i,j,k}fi,j,k?表示走了iii步,兩頭的橫坐標分別是j,kj,kj,k,這樣可以壓掉一維狀態了,然后滾動卡長
P4873 [USACO14DEC]Cow Jog G
題意
nnn頭牛,每頭牛從pip_ipi?出發,速度為viv_ivi?,跑TTT秒。
求最少多少個賽道可以使所有牛之間沒有沖突。
1≤n≤1051\leq n\leq 10^51≤n≤105
解題思路
兩頭牛有沖突當且僅當aaa的起始位置小于等于bbb,而aaa的終止位置大于等于bbb。因為起始位置單調,所以算出終止位置然后求最長不升子序列即可。
P3535 [POI2012]TOU-Tour de Byteotia
題意
給出nnn個點mmm條邊的一張無向圖,求至少刪掉多少條邊才能讓編號不超過kkk的點都不在任何一個環上。
解題思路
考慮一下如果一個點在環上,顯然刪掉關鍵點連著的邊不會虧,所以肯定存在一種方案只刪去連接關鍵點的邊。
所以我們可以優先連接所有的非關鍵點的邊,然后剩下的跑一個類似最小生成樹的就好了。
P5505 [JSOI2011]分特產
題意
nnn個人,mmm種特產。第iii種特產有aia_iai?個 ,要求每個人都分到一個特產,求方案數。
1≤n,m,ai≤10001\leq n,m,a_i\leq 10001≤n,m,ai?≤1000
解題思路
考慮二項式反演,這樣就可以去掉每個人都分到的條件了。
CF1555D Say No to Palindromes
題意
給出一個串,每次詢問一個區間表示將這個區間子串提出來之后至少要修改多少個字符才能使得沒有長度大于111的回文串。字符集為{a,b,c}\{a,b,c\}{a,b,c}。
1≤n,m≤2×1051\leq n,m\leq 2\times 10^51≤n,m≤2×105
解題思路
顯然只需要考慮長度為2,32,32,3的回文串,也就是每個字符不能和它距離不超過222的位置相等。又因為字符集大小為333所以肯定是按照某個abcabcabc的排列循環下去的,枚舉這個排列即可。
Loj#6467- ‘Zip’ Quine
比較奇怪的題目所以放這里了
題意
一種包含兩個語句的語言
- print x:代碼后xxx行不編譯而是直接輸出
- repeat x y:一直輸出輸出過的倒數第yyy行xxx次(可以輸出自己輸出的)
要求寫一個能輸出自己本身的代碼
解題思路
核心肯定是repeat語句,我們考慮用repeat語句輸出它本身,然后因為因為第一個repeat會多輸出些東西所以前面補一些print 1,因為兩個print 1會輸出一個print 1最后代碼就是
print 1 print 1 print 1 print 1 print 1 print 1 repeat 3 2 print 2 repeat 3 2 print 2 repeat 3 2【LGR-089】洛谷 8 月月賽 II T2
題目大意
給出一個長度為nnn的0/10/10/1字符串SSS,然后求一個長度為mmm個字符串TTT滿足
1≤n≤m,1≤∑m≤2×1061\leq n\leq m,1\leq \sum m\leq 2\times 10^61≤n≤m,1≤∑m≤2×106
解題思路
考慮暴力插一個字符進去,好像插在哪都會被卡就隨機一下位置和插啥,然后用字符串hashhashhash判就好了。
CF1304C Air Conditioner
題目大意
開始空調溫度為mmm,nnn個顧客來的時間不同和適應溫度不同。
每個時刻可以使得空調溫度變化一度。
求能否滿足所有顧客的需求。
1≤n≤100,1≤ti,li,ri,m≤1091\leq n\leq 100,1\leq t_i,l_i,r_i,m\leq 10^91≤n≤100,1≤ti?,li?,ri?,m≤109
解題思路
每次考慮能夠調整到的的區間就好了。
CF1463B Find The Array
題目大意
給出一個長度為nnn的序列aaa,要求一個序列bbb滿足
1≤n≤50,1≤T≤10001\leq n\leq 50,1\leq T\leq 10001≤n≤50,1≤T≤1000
解題思路
考慮一下如果差小于aia_iai?和的一半就好了,我們把aaa按照位置奇偶分組,然后看下奇數大還是偶數大,大的bi=aib_i=a_ibi?=ai?,否則bi=1b_i=1bi?=1。
顯然這樣一定是合法的。
CF891A Pride
題目大意
給出一個長度為nnn的序列aaa,你每次可以讓一個數gcdgcdgcd上一個相鄰的數,求最小的步驟使所有數都變成111。
1≤n≤2000,1≤ai≤1091\leq n\leq 2000,1\leq a_i\leq 10^91≤n≤2000,1≤ai?≤109
解題思路
找到一個最小的gcdgcdgcd為111的區間,然后造出一個111,之后直接拿111改變周圍即可。
時間復雜度:O(n2)O(n^2)O(n2)
AT2387 [AGC016C] +/- Rectangle
題目大意
求一個W×HW\times HW×H的矩陣滿足元素和為正數,且任意一個w×hw\times hw×h的矩陣和為負數。
1≤w≤W≤500,1≤h≤H≤5001\leq w\leq W\leq 500,1\leq h\leq H\leq 5001≤w≤W≤500,1≤h≤H≤500
解題思路
如果對一行/列有構造方法那么顯然合法,考慮一行的話當且僅當N%n≠0N\% n\neq 0N%n?=0的時候有解(就是每nnn個填一個?(n?1)inf?1-(n-1)inf-1?(n?1)inf?1,然后其他位置填infinfinf)
如果對于行列都無解那么一定無解,因為此時W%w=0,H%h=0W\%w=0,H\%h=0W%w=0,H%h=0,也就是用上述的方法在二維的情況下也無法讓加上一些權值。
AT2266 [AGC008D] K-th K
題目大意
給出長度為nnn的序列www,構造一個長度n×nn\times nn×n的序列滿足
1≤n≤5001\leq n\leq 5001≤n≤500
解題思路
首先iii的前i?1i-1i?1個肯定優先填,我們按照wiw_iwi?從小到大填,然后填到對應位置之后后面的也可以填了,丟進隊列里維護一下就好了。
AT2148-[ARC063C]木と整數/Integers on a Tree
題目大意
給出nnn個點的一棵樹,一些點上有數字,然后你要在其他節點上填數字使得每條邊連接的兩點數字差絕對值為111。
1≤n≤1051\leq n\leq 10^51≤n≤105
解題思路
用帶數字的點分割出若干個聯通塊,每個聯通塊dfsdfsdfs搜出每個點的數字范圍就好了。
至于奇偶性我懶得判,最后直接判得出的那個解是否合法就好了(((
CF1592D Hemose in ICPC ?
題目大意
給出nnn個點的一棵樹,樹上的權值不告訴你,Dist(x,y)Dist(x,y)Dist(x,y)表示xxx到yyy路徑上的最大值,你每次可以詢問一個點集中最大的Dist(x,y)Dist(x,y)Dist(x,y)是多少,求一個x,yx,yx,y使得它的Dist(x,y)Dist(x,y)Dist(x,y)是全圖最大的。
1≤n≤10001\leq n\leq 10001≤n≤1000,詢問次數不超過121212。
解題思路
隨便找個點當根,那么所有邊肯定被某條根到葉子的路徑包括,然后再葉子上二分就好了。
AGC052A Long Common Subsequence
題目大意
給出三個長度為2n2n2n的010101串,保證每個恰好有nnn個000和nnn個111。
求一個長度為2n+12n+12n+1的串使得它是所有其他串的兩倍(自己接在自己后面形成的字符串)的子序列。
1≤∑n≤1051\leq \sum n\leq 10^51≤∑n≤105
解題思路
花里胡哨的,兩個部分肯定都是各有nnn個000和nnn個111,一個樸素的想法是nnn個000+nnn個111肯定是滿足條件的。
考慮少了的那個怎么補充,考慮接一個000,因為是自己接在自己后面,如果最后一個字符是000那么顯然滿足條件,如果最后有kkk個111那么在1~2n?k1\sim 2n-k1~2n?k這一部分就已經匹配完了前面的nnn個000,而后面又可以在到自己的復制之前匹配到kkk個111,而在這kkk個一之前肯定是一個000來作為最后一個匹配。
AGC045A Xor Battle
題目大意
有兩個人,和一個數字開始時為000,第iii回合有由sis_isi?號人操作,可以選擇是否讓數字異或上aia_iai?,000號人要把數字變為000,111號人反之。
求哪個人獲勝。
1≤T≤100,1≤n≤200,1≤ai≤10181\leq T\leq 100,1\leq n\leq 200,1\leq a_i\leq 10^{18}1≤T≤100,1≤n≤200,1≤ai?≤1018
解題思路
對于一號人的每個操作,零號人都可以通過調整后面它的操作的狀態來抵消掉這個操作。具體地如果零號后面的操作數字能夠異或出這個數字那這個數字就沒有用。
所以換到具體做法就是從后往前掃,每次遇到000號操作就加入線性基,不然就判斷能不能被異或出來就好了。
時間復雜度:O(Tnlog?L)O(Tn\log L)O(TnlogL)
CF449D Jzzhu and Numbers
題目大意
給出一個長度為nnn的序列aaa,求有多少個子序列的按位和(位運算)為000。
1≤n,ai≤1061\leq n,a_i\leq 10^61≤n,ai?≤106
解題思路
考慮容斥假設和之后至少有iii位有111那么容斥系數就是(?1)i(-1)^i(?1)i,那么高維前綴和處理出數組fif_ifi?表示包含iii的數字個數,然后用答案就是∑i∈S2fi×(?1)∣S∣\sum_{i\in S} 2^{f_i}\times (-1)^{|S|}∑i∈S?2fi?×(?1)∣S∣。
時間復雜度:O(nlog?n)O(n\log n)O(nlogn)
ARC132A Permutation Grid
題目大意
給出nnn的兩個排列RRR和CCC。
定義一個n×nn\times nn×n的黑白網格,滿足第iii行恰好有RiR_iRi?個黑格子,第iii列恰好有CiC_iCi?個黑格子。
qqq次詢問給出(x,y)(x,y)(x,y)求位置(x,y)(x,y)(x,y)的格子顏色。
1≤n,q≤1051\leq n,q\leq 10^51≤n,q≤105
解題思路
先考慮極端的情況,Ri=1R_i=1Ri?=1且Cj=nC_j=nCj?=n的情況那么第iii列肯定只有(i,j)(i,j)(i,j)是黑色的,然后再考慮Ri′=2R_{i'}=2Ri′?=2且Cj′=n?1C_{j'}=n-1Cj′?=n?1時(i′,j)(i',j)(i′,j)肯定也是黑色的,然后又因為(i,j′)(i,j')(i,j′)是白色的,那么(i′,j′)(i',j')(i′,j′)肯定也是黑色的。
那么方法就已經很明顯了,如果Ri+Cj>nR_i+C_j>nRi?+Cj?>n那么就是黑色,否則就是白色就好了。
AGC012B Splatter Painting
題目大意
nnn個點mmm條邊的一張圖,qqq次操作將距離xxx不超過ddd的點都染成顏色ccc,求最后每個點的顏色。
1≤n,m,q,x,c≤105,1≤d≤101\leq n,m,q,x,c\leq 10^5,1\leq d\leq 101≤n,m,q,x,c≤105,1≤d≤10
解題思路
記fx,if_{x,i}fx,i?表示距離第xxx個點不超過iii距離都得被染色的最后那次操作,然后暴力轉移就好了。
AGC013C Ants on a Circle
題目大意
有nnn只螞蟻在長度為LLL的環上爬,速度都是111,撞到對方就轉頭,求TTT秒后每只螞蟻的位置。
1≤n≤105,1≤L,T≤1091\leq n\leq 10^5,1\leq L,T\leq 10^91≤n≤105,1≤L,T≤109
解題思路
一個很經典的做法是我們不需要管轉頭,因為如果每只螞蟻都一樣轉頭相當于沒轉。
然后考慮之后怎么定位每只螞蟻,發現如果沒有螞蟻經過環的話螞蟻之間的排名是不會變的。
但是如果有螞蟻經過環,那么其實無論是哪只螞蟻都會讓所有螞蟻的排名根據經過環的方向轉動。
之接求每只螞蟻經過環的次數即可。
總結
- 上一篇: 电脑更改配置器在哪里(电脑 更改 配置)
- 下一篇: 1.14 日志(递推ybtoj)