博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3104 Drying(二分答案)
阅读量:4940 次
发布时间:2019-06-11

本文共 973 字,大约阅读时间需要 3 分钟。

 

【题目链接】 

 

【题目大意】

  给出n件需要干燥的衣服,烘干机能够每秒干燥k水分,

  不在烘干的衣服本身每秒能干燥1水分
  求出最少需要干燥的时间。

 

【题解

  考虑将烘干机的烘干效应变为k-1,那么就是每件衣服在每秒都会自动减少一水分

  如果我们知道最少需要的时间,那么每件衣服自己减少的水分数量就知道了,
  在除去自然减少的水分之后,看看还需要多少k-1的水分减少才能烘干全部的衣服就可以了,
  因此我们二分这个答案,验证是否可行即可。

 

【代码】

#include 
#include
using namespace std;const int N=100010;int n,k,a[N];bool check(int x){ int cnt=0; for(int i=1;i<=n;i++){ if(a[i]-x<=0)continue; cnt+=(a[i]-x+k-2)/(k-1); //printf("%d\n",cnt); if(cnt>x)return 0; }return 1;}int main(){ while(~scanf("%d",&n)){ int l=1,r=0,ans; for(int i=1;i<=n;i++)scanf("%d",&a[i]),r=max(r,a[i]); scanf("%d",&k); if(k==1){printf("%d\n",r);continue;} while(l<=r){ int mid=(l+r)>>1; //printf("%d %d %d\n",l,r,mid); if(check(mid))ans=mid,r=mid-1; else l=mid+1; }printf("%d\n",ans); }return 0;}

转载于:https://www.cnblogs.com/forever97/p/poj3104.html

你可能感兴趣的文章
敏捷开发中“可运行软件”的评审标准(兼谈敏捷开发中的迭代中期质量控制)...
查看>>
完整的Flex多文件上传实例
查看>>
C#编码简单性之代码篇(如何编写简短的C#代码,随时更新)
查看>>
Razor:从aspx到cshtml常见错误及正确书写方法
查看>>
算法不会,尚能饭否之折半查找(Binary search)
查看>>
从生产线到生产岛:理解敏捷开发中的设计与测试活动
查看>>
char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)...
查看>>
算法不会,尚能饭否之树(2)
查看>>
算法不会,尚能饭否之树(1)
查看>>
flex4 日期类型字符串转日期类型(string转Date)
查看>>
算法不会,尚能饭否之双向循环链表
查看>>
flex include和import
查看>>
mybatis动态SQL语句
查看>>
如何面向用户价值编写敏捷开发用户故事
查看>>
flex 1037:包不能嵌套
查看>>
Flex显示图片的常用方式
查看>>
算法不会,尚能饭否之顺序表
查看>>
算法不会,尚能饭否之栈
查看>>
浅入MFC之对话框及MFC程序的运行
查看>>
浅入MFC之类框架
查看>>