第一题完成 是比较简单的!代码如下: #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; }
点赞 评论

相关推荐

牛客网
牛客企业服务