Disastrous Downtime(一段)
阿新 • • 發佈:2019-02-18
題意:有 n 條指令,在同一時間內,一臺機器只能同時執行 k 條指令,而且 每條指令需要執行 1000ms=1s 的時間才能執行完畢, 問總共最少需要多少臺機器才能使每條指令都執行完。
題解:是用兩個指標ij,i小j大,對於每個i來說找最小的j使得data[j]-data[i]>1000,則j-i為這一秒內需要處理的請求數,求出其中的最大值。一個機器能處理k個,算出需要多少個機器就行了。
#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <vector> #include <queue> #define maxn 100005 #define INF 0x3f3f3f3f #define LL long long using namespace std; int n,k; int a[maxn]; int main() { while(cin>>n>>k) { for(int i=0;i<n;i++) { cin>>a[i]; } sort(a,a+n); int i,j; int ans=0; for(i=0,j=0;i<n&&j<n;) { while(((a[j]-a[i])<1000)&&j<n) j++; if(j==n) break; ans=max(ans,j-i); i++; } ans=max(ans,j-i); if(ans%k) { ans=ans/k+1; } else ans=ans/k; cout << ans << endl; } return 0; }