笔试第一道。。wa了好几次,也是无语。。hihocoder错了不会告诉你失败的时候的测试集,这样有时候就很烦。。
遍历所有的字体,从min(w,h)开始逐渐变小开始遍历。。计算行数,和all行数比较,只要比他小就可以。。
我太瓜皮了。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std; int main()
{
int testn,n,p,w,h;
cin>>testn;
while(testn--)
{
cin>>n>>p>>w>>h;
int a[n];
for(int i=; i<n; i++)
cin>>a[i];
int up=min(w,h);
bool flag=false; for(int i=up; i>=; i--)
{
int temph=;
int allh=(h/i)*p;
for(int j=; j<n; j++)
{
temph+=a[j]/(w/i);
//这里表示开始分段了
if(a[j]%(w/i)) temph++;
}
if(temph<=allh) {cout<<i<<endl; flag=true; break;}
} if(!flag) cout<<<<endl; }
return ;
}