給你乙個數,可以更改任意位置的數字,讓你把他變成有 \(k\) 個相同數字的數。
改變某一位數字的代價是這一位原來的數字和現在的數字的差的絕對值。
問最小代價,並輸出字典序最小方案。
考慮貪心,我們假設當前情況下,這 \(k\) 個相同數字是 \(dg\) 。
那麼我們就以和 \(dg\) 的差值為關鍵字公升序排序,不過這樣還不夠。
因為要求字典序最小,我們就還要考慮數字本身的位置和大小關係。
此時的乙個經典錯解是,直接把排序後的前 \(k\) 位改成 \(dg\) 。
但是會被這組資料叉掉:
input:
8 422294777
ans:
22274777
錯解會輸出22292777
。
所以我們就考慮先列舉 \(dg\) 並求出最優花費,然後不斷的取找乙個字典序最小的方案即可。
給你乙個包含0
,1
,?
的字串。
?
可以任意填上0/1
。
要求你將它變為恰好有 \(a\) 個0
,\(b\) 個1
的回文串。
無解輸出-1
,問任意可行方案。
首先考慮把已經不可能回文的情況特判掉(已經有 \(0,1\) 相互對應)
然後用兩個指標從字串的兩邊逼近,遇到問號就填。
不過為了避免填出無解的情況,我們優先填剩餘個數更多的數字,並且先處理乙個問號和乙個數字相對的情況,再處理兩個問號相對的情況。
最後注意一下長度為奇數時中間的那個就行。
純模擬題,唯一噁心的就是讀入和處理。
還是模擬題,只需要分情況處理就好。
仍舊是個小清新模擬,暴力匹配即可。
給你乙個 \(n\times m\) 的矩陣,你可以指定乙個二元組 \((x,y)\) 滿足 \(x|n,y|m\),並矩陣分成幾個大小為 \(x \times y\) 的小矩陣。
定義乙個劃分是是好的,當且僅當這個劃分方案當中沒有兩個相同的小矩陣(允許旋轉但不是翻轉矩陣)。
給定 \(n,m\) 和矩陣,問你有多少種可能的好劃分。
\(n,m \le 20\)
直接暴力列舉所有情況,然後對於每乙個矩陣的四種旋轉hash一下即可。
也可以用 map。
03 04做題總結
3 4 月做題總結 題目鏈結 主要思路 確定比賽名次 拓撲排序 奇怪的夢境 拓撲排序判環 逃生反向拓撲 儀仗隊o尤拉函式 秦隊長的猜想 g哥德 猜想 棋盤問題 dfs 回溯 非常可樂 bfs or 數論 表示式求值 m模擬legal or not t拓撲排序 產生冠軍 t拓撲排序 reward 拓撲...
做題總結 Pawn s Revenge
題目描述 這道題目自己一開始時也沒有思路 後來才發現其實也並不難,實在是學的不太好 後來從網上查詢了一些資料,大概明白了這道題目的思路。這道題目是在已經有且只有乙個k棋子的情況下,通過增加最少數量的的pawn棋子,能夠將對方的所有的 棋子全部攻擊到,其中k能夠攻擊其餘八個方向,pawn棋子只能攻擊左...
做題總結 Latin Squares
原題 題意分析 題目就是輸入乙個二維陣列 用來表示矩陣 判斷對於矩陣中的每乙個數字是否在該數字所在的行 所在的列的只出現一次 相當於數獨的概念 如果是的話,則該矩陣是拉丁方,再判斷矩陣的第一行 第一列的元素是否按照公升序的方式排列的,從而進行對應的判斷輸出 做題思路 實現 include 萬能標頭檔...