poj 3104 Drying
生活随笔
收集整理的這篇文章主要介紹了
poj 3104 Drying
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
晾衣服:n件衣服各含a_i水分,自然干一分鐘一單位,放烘干機一分鐘k單位,求最短時間。
1.題目中說了一分鐘內只能放一件衣服進烘干機,,我這里想的是一分鐘內干了后,拿出來再放別的。(額。。更節約。。)。
2.改好了之后,先將水多的放進烘干機,然后把時間記下來,后面如果有自然干的時間大于這個時間的話,就放進烘干機,更新時間。
3.自然干:n件衣服可以同時晾。
取C(mid) := 能在mid分鐘內處理完
①設需要用x分鐘的機器,那么自然風干需要mid – x分鐘,x和mid需要滿足:
k*x + (mid – x) >= a_i,即 x >= (a_i – mid) / (k – 1)。
1.題目中說了一分鐘內只能放一件衣服進烘干機,,我這里想的是一分鐘內干了后,拿出來再放別的。(額。。更節約。。)。
2.改好了之后,先將水多的放進烘干機,然后把時間記下來,后面如果有自然干的時間大于這個時間的話,就放進烘干機,更新時間。
3.自然干:n件衣服可以同時晾。
取C(mid) := 能在mid分鐘內處理完
①設需要用x分鐘的機器,那么自然風干需要mid – x分鐘,x和mid需要滿足:
k*x + (mid – x) >= a_i,即 x >= (a_i – mid) / (k – 1)。
②當k=1的時候,很顯然會發生除零錯誤,需要特殊處理。
#include <cstdio> #include <iostream> #include <cmath> using namespace std; int main() {int n,k;long long a[100000];while(cin>>n){long long MAX=0;for(int i=0;i<n;++i){scanf("%lld",&a[i]);if(a[i]>MAX)MAX=a[i];}cin>>k;if(k>1){long long low=1,high=MAX,value,mins;while(high>=low){long long mid=(low+high)>>1;mins=0;for(int i=0;i<n;++i){if(a[i]-mid>0){mins+=(long long)ceil((double)(a[i]-mid)/(double)(k-1));}}if(mins<=mid){value=mid;high=mid-1;}elselow=mid+1;}cout<<value<<endl;}elsecout<<MAX<<endl;}return 0; }總結
以上是生活随笔為你收集整理的poj 3104 Drying的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj3258 River Hopsco
- 下一篇: Conan and Agasa play