第一题完成 是比较简单的!代码如下: #include<iostream> #include<stdio.h> using namespace std; int n,w,h,p; int a[1010]; bool check (int s) {     if (w<s || h<s) return 0;     int nowx,nowy;     int x=w/s;     int y=h/s;     int tot=0;     int pages=0;     for (int i=1;i<=n;i++)     {         tot+=a[i]/x;         if (a[i]%x) tot++;         while (tot>y)         {             tot-=y;             pages++;         }         if (pages>p) return 0;     }     if (tot) pages++;     if (pages<=p) return 1;     return 0; } void doing () {     cin>>n>>p>>w>>h;     for (int i=1;i<=n;i++)         cin>>a[i];     int left,right,ans;     left=0;right=200000000;     while (left<=right)     {         int mid=(left+right)>>1;         if (check(mid)){             ans=mid;             left=mid+1;         }         else right=mid-1;     }     cout<<ans<<endl; } int main () {     int T;     cin>>T;     while (T--)         doing ();     return 0; }
点赞 评论

相关推荐

群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
03-11 21:46
西北大学 Java
河和静子:这只是实习工资,我学长北大通班博一的,他同学被这家天天发邮件让他去实习,一个月10w
点赞 评论 收藏
分享
牛客网
牛客企业服务