又到了一年一度的程式設計大賽了~
現在參賽選手在機房前排起了一列長隊,這裡面有萌新也有大佬,萌新都很仰慕大佬,由於大佬們的參賽,萌新們對這次比賽的精彩程度格外期待。對於每個萌新來說,他/她/它對本次的比賽的期待度為排在他/她/它前面的大佬的數量,而這次比賽的總期待度等於每個萌新的期待度之和。
sk同學作為本次比賽的組織者,希望比賽的期待度能夠剛剛好,太低的話會讓大家興致不高,太高的話會被噴不滿足預期。
現在sk同學可以交換任意相鄰的兩名參賽選手,但是比賽馬上就要開始了,sk同學想知道最少要進行多少次交換才能使得這次比賽的總期待度剛好為k,你能幫幫他嗎?
第一行是乙個正整數t(≤ 10),表示測試資料的組數,對於每組測試資料,
第一行是兩個正整數n(≤ 1000000)和k(≤ 1000000000),分別表示佇列長度和最終的比賽總期待度,
接下來一行包含n個字元,表示這個佇列,第i個字元表示佇列裡的第i個人,'d'表示大佬,'m'表示萌新,保證不會出現其它字元。
對於每組測試資料,輸出一行,包含乙個整數,表示最少的交換次數,無解輸出-1。示例1
23 1dmm
3 3dmm
1-1
題解:題意相當於是問最少交換多少次相鄰字元,才能使得逆序對數恰好為k。因為交換兩個相同字元逆序對數不變,所以只能交換兩個不同字元,一次交換會使得逆序對數要麼加一要麼減一。因此,先統計出逆序對數,記為x,字元d的個數,記為d。如果d*(n-d) < k, 那麼無解,輸出-1,否則輸出abs(x-k)。其中(n-d)為字元m的個數,d*(n-d)為逆序對數的最大值。
#includeusing namespace std;typedef long long ll;
int t,n,k;
char s[1000010];
int main()
return 0;
}
如何才能辦好程式設計師的春節晚會
春節又要到了,一朋友msn的顯示名稱修改為 年關難過 掩面,淚奔 我不敢問她是什麼原因,或許是回家的路票沒有著落,或許是工作上的 情感上的原因,總而言之,相當地心酸痛楚。春節是中國最隆重的傳統節日,也象徵團結 興旺,對未來寄託新的希望的佳節,因此,每年的這個時候到處都會一派張燈結綵 喜氣洋洋的景象,...
pb 判斷包含字串 你準備好比賽PB了嗎?
跑步pb的要素有哪些?4小時 330 3小時 250 245 雖然大部分跑者跑步的初心都不是為了追求成績,但是跑著跑著,對於成績,漸漸都會有乙個小目標。這其中,不少跑者們都是摩拳擦掌,而目標更是直指pb,準備用成績的突破為這個不完美的2020年畫上乙個相較圓滿的句號。我想要跑進330,我想破三,在比...
如何口算複雜的i 和 i
近些年來,各種筆試題就喜歡出這種自增自減運算子,這種題目若沒有好的解題方法很煩人,今天我就教你接這種題目的方法,以後都是送分題。小夥伴們先測試一下自己的水平 int main 答案是 i 6,num 8 你算對了嗎?我們都知道i 是先使用完再自加,而 i是先自加再使用 問題就出在完上面,何時算完,當...