Codeforces 897D. Ithea Plays With Chtholly (交互)
阿新 • • 發佈:2018-01-22
space pro 次數 ble 最大 scan 題意 def src
題目鏈接:D. Ithea Plays With Chtholly
題意:
給你n張紙,在紙上寫字(在 1 - c之間)可以寫m次數 (,)。(主要是交互,讓你判斷)
題解:
首先,看到m>=n*c/2,我們假設從1位置放入數據,如果放入的數據大於前面已經放入的數據那就往後排小於就替換。這樣放的話,每個位置替換最大的次數是C,所以最大的次數總數是n*c。發現正好差了一倍。所以我們可以從兩邊放入,(小於c/2從1放入,大於c/2從N位置放入)這樣每個位置替換的最大次數就是c/2,就正好可以過了。(要註意這次題目必須刷新緩沖區(好像是~英文不好~~~),要用fflush或是cin的endl)
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int MAX_N = 1e3+9; 4 int vec[MAX_N]; 5 int main() 6 { 7 int N,M,T,c; 8 memset(vec,0,sizeof(vec)); 9 cin>>N>>M>>c; 10 int t; 11 int num = 0; 12 while(~scanf("%d",&t)) 13 { 14 if(t <= c/2) 15 { 16 int pos = 1; 17 for( pos = 1;pos <= N;pos++) 18 { 19 if(vec[pos] == 0) num++; 20 if(vec[pos] == 0 || vec[pos] > t) 21 { 22 vec[pos] = t; 23 break; 24 } 25 } 26 cout<<pos<<endl; 27 } 28 else 29 { 30 int pos = N; 31 for( pos = N;pos >= 1;pos--) 32 { 33 if(vec[pos] == 0) num++; 34 if(vec[pos] == 0 || vec[pos] < t) 35 { 36 vec[pos] = t; 37 break; 38 } 39 } 40 cout<<pos<<endl; 41 } 42 if(num == N) break; 43 } 44 return 0; 45 }
Codeforces 897D. Ithea Plays With Chtholly (交互)