hihoCoder #1288 : Font Size

Posted yunners

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hihoCoder #1288 : Font Size相关的知识,希望对你有一定的参考价值。

时间限制:10000ms
单点时限:1000ms
内存限制:256MB
技术图片
题目的大概意思就是

史蒂文·爱在手机上读书。 他现在阅读的书包含N个段落,第i个段落包含ai字符。史蒂文想使字符更易于阅读,因此他决定增加字符的字体大小。 但史蒂文(Steven)的手机屏幕尺寸有限。 其宽度为W,高度为H。因此,如果字符的字体大小为S,则它只能在一行中显示⌊W/S⌋个字符,而在页面中仅显示⌊H/S⌋行。(⌊x⌋是不超过x的最大整数)因此,这里的问题是,如果史蒂文想控制页数不超过P,那么他可以设置的最大字体大小是多少? 请注意,段落必须以换行开头,并且段落之间没有空行。

输入可能包含多个测试用例。第一行是一个整数任务,表示测试用例的数量。对于每个测试用例,第一行包含四个整数N、P、W和H,如上所述。第二行包含N个整数a1 a2…表示每个段落中的字符数。

输出可以设置的最大字体大小。


 样例输入:

2
1 10 4 3
10
2 10 4 3
10 10

样例输出:

3
2

  

代码如下:

#include<stdio.h>
#include<string.h>
main()
{
  int N;
  scanf("%d",&N);
  int i,j,accum[N],data[N][999],n[N],p[N],w[N],h[N],flag=1;
  memset(accum,0,sizeof(accum));
  memset(data,0,sizeof(data));
  for(i=0;i<N;i++)
  {
    scanf("%d%d%d%d",&n[i],&p[i],&w[i],&h[i]);
    for(j=0;j<n[i];j++)
    {
      scanf("%d",&data[i][j]);
      accum[i]+=data[i][j];
    }
  }
  for(i=0;i<N;i++)
  {
    int size=w[i]>h[i]?h[i]:w[i];
    for(;size>=1;size--)
    {
      int row=h[i]/size;//行数
      int column=w[i]/size;//列数
      int total_row=row*p[i];//总行数
      int accum=0;//使用的行数
      flag=1;
      for(j=0;j<999&&data[i][j]!=0;j++)
      {
        int temp=data[i][j]/column;
        accum+=temp;
        if(temp*column<data[i][j])
        accum++;
        if(accum>total_row)
        flag=0;
      }
      if(flag)break;
    }
    if(flag)
    printf("%d
",size);
    else
    printf("0
");
  }
}

  

以上是关于hihoCoder #1288 : Font Size的主要内容,如果未能解决你的问题,请参考以下文章

HiHocoder 1288 FontSize

HDU 1288 Hat's Tea

HUD 1288 Hat's Tea(反向的贪心,非常好的一道题)

[hihocoder 1249 Xiongnu's Land]线性扫描

hihocoder #1071 : 小玩具

hihocoder-1850-字母去重