POJ 3104 Drying (二分求最小值)
2017-04-20 21:20
141 查看
开始一看题目的时候,就想着二分时间,然后看可不可行。然后在写ok判断可不可行的时候,莫名的感觉不用二分
然后WA到想哭。之后发现出了问题,1.题目中说了一分钟内只能放一件衣服进烘干机,,我这里想的是一分钟内干了后,拿出来再放别的。(额。。更节约。。)。2.改好了之后,先将水多的放进烘干机,然后把时间记下来,后面如果有自然干的时间大于这个时间的话,就放进烘干机,更新时间。但是这个又有点问题,水多的有可能一部分时间在烘干机里,一部分在外面自然烘干时间更短。
然后还是老实的二分吧
//注意转long long ~~~~
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <cmath> using namespace std; const int maxn = 100005; int n,k; int a[maxn]; bool cmp(int a1,int b2) { return a1>b2; } void ok() { int temp=a[0]; int time=0; int i=1; while(i<n) { while(temp-k<0) { if(i>=n) break; temp+=(a[i]-time); i++; } temp-=k; time++; } if(temp>0) time++; printf("%d\n",time); } int main() { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&k); sort(a,a+n,cmp); ok(); return 0; }
然后WA到想哭。之后发现出了问题,1.题目中说了一分钟内只能放一件衣服进烘干机,,我这里想的是一分钟内干了后,拿出来再放别的。(额。。更节约。。)。2.改好了之后,先将水多的放进烘干机,然后把时间记下来,后面如果有自然干的时间大于这个时间的话,就放进烘干机,更新时间。但是这个又有点问题,水多的有可能一部分时间在烘干机里,一部分在外面自然烘干时间更短。
然后还是老实的二分吧
//注意转long long ~~~~
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <cmath> using namespace std; const int maxn = 100005; long long n,k; long long a[maxn]; bool cmp(long long a1,long long b1) { return a1>b1; } int ok(long long time) { long long cnt=0; long long i=0; for(i=0;i<n;i++) { if(a[i]<=time) break; else { cnt+=(a[i]-time+k-2)/(k-1);//假设全部自然烘干,然后放烘干机里的就是k-1 } } if(cnt>time) return 1; else return 0; } int main() { scanf("%I64d",&n); for(long long i=0;i<n;i++){ scanf("%I64d",&a[i]);r+=a[i]; } scanf("%I64d",&k); sort(a,a+n,cmp); if(k==1) cout<<a[0]<<endl; else{ long long l=0, r=a[0]; while(l<=r) { long long mid=l+(r-l)/2; if(ok(mid)) l=mid+1; else r=mid-1; } cout<<l<<endl; } return 0; }
相关文章推荐
- POJ 3104 Drying (二分求最小值)
- POJ 3104 Drying (二分求最小值)
- 【POJ】3104 - Drying 二分->最大化最小值
- POJ 3104 Drying (二分&最大化最小值)
- POJ 3104 Drying (二分求最小值)
- POJ 3104 Drying (二分求最小值)
- poj 3104 Drying(二分搜索之最大化最小值)
- POJ 3104 Drying (二分求最小值)
- POJ 3104 Drying (二分求最小值)
- POJ 3104 Drying (二分求最小值)
- POJ 3104 - Drying(二分搜索)
- POJ - 3104 Drying 二分 + 贪心
- POJ 3104 Drying (二分)
- POJ - 3104 Drying(二分)
- POJ_3104_Drying_(二分,最小化最大值)
- poj 3104 Drying (二分)
- poj 3104 Drying (二分搜索答案)
- poj 3104 Drying(二分查找)
- POJ 3104 Drying(烘凉衣服)__二分
- POJ 3104 Drying 二分