JZOJ__Day 10:【普及模拟】【USACO】iCow播放器
題目描述
被無止境的農活壓榨得筋疲力盡后,Farmer John打算用他在MP3播放器市場新買的iCow來聽些音樂,放松一下。FJ的iCow里存了N(1 <= N <= 1,000)首曲子,按1..N依次編號。至于曲子播放的順序,則是按一個Farmer John自己設計的算法來決定:
第i首曲子有一個初始權值R_i(1 <= R_i <= 10,000)?!?/p>
當一首曲子播放完畢,接下來播放的將是所有曲子中權值最大的那首(如果有兩首或多首曲子的權值相同,那么這些曲子中編號最小的那首會被選中)。
一首曲子在播放結束后,它的權值會被平均地分給其他N-1首曲子,它本身的權值清零?!?/p>
如果一首曲子的權值無法被平均分配(也就是說,無法被N-1整除),那么被N-1除的余數部分將會以1為單位,順次分配給排名靠前的曲子(也就是說,順序為曲目1、曲目2…依次下去。當然,剛播放過的那首曲子需要被跳過),直到多出的部分被分配完。
在選定的下一首曲子播放完畢后,這個算法再次被執行,調整曲子的權值,并選出再接下來播放的曲目。請你計算一下,按FJ的算法,最先播放的T(1 <= T <= 1000)首曲子分別是哪些。
輸入
輸出
第1行: 2個用空格隔開的整數:N 和 T
第2..N+1行: 第i+1行為1個整數:R_i
樣例輸入
3 4
10
8
11
樣例輸出
3
1
2
3
數據范圍限制
提示
【樣例說明】
每一首曲子播放前,三首曲子的權值分別為:
R_1 R_2 R_3
10 8 11 -> 播放 #3 11/2 = 5, 權值余量 = 116 13 0 -> 播放 #1 16/2 = 80 21 8 -> 播放 #2 21/2 = 10, 權值余量 = 111 0 18 -> 播放 #3 ...分析
直接模擬
程序
var n,q,i,max,maxi,a,b:longint; sz:array[0..50000] of longint; beginreadln(n,q);for i:=1 to n doreadln(sz[i]);repeatdec(q);max:=0;for i:=1 to n doif sz[i]>max thenbeginmax:=sz[i];maxi:=i;end;writeln(maxi);a:=max div (n-1);b:=max mod (n-1);sz[maxi]:=0;for i:=1 to n doif i<>maxi then sz[i]:=sz[i]+a;for i:=1 to n doif i<>maxi thenbeginif b=0 then break;dec(b);sz[i]:=sz[i]+1;end;until q=0; end.轉載于:https://www.cnblogs.com/YYC-0304/p/9500081.html
總結
以上是生活随笔為你收集整理的JZOJ__Day 10:【普及模拟】【USACO】iCow播放器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ__Day 9:【普及模拟】Sq
- 下一篇: JZOJ__Day 10:【普及模拟】【