zoukankan      html  css  js  c++  java
  • 【hihoCoder】1288 : Font Size

    题目:http://hihocoder.com/problemset/problem/1288

    手机屏幕大小为 W(宽) * H(长),一篇文章有N段,每段有ai个字,要求使得该文章占用的页数不超过P的字体最大值S。

    思路:

    1. 最大的字体:一页只放一个字,则S = min(W, H)

    2. 枚举方式:对于每一个S,计算需要的行数,然后判断页数是否超过P

    注意点:

    1. 如果一段文字的最后一行没有被填满,下一段文字也必须从下一行开始。

    2. 关于ceil和floor函数

    • 需要包含头文件 #include <math.h>
    • 参数类型应该为double。如果是个计算式子,要注意类型转换
    int a, b;
    ceil(a/b);//结果不正确,因为a/b已经被截断,成为int型的数
    ceil(a/(double) b);//ceil里面的值是个double类型

    3. a / (b / c) 不一定等于 a / b * c 

    源码

     1 #include <iostream>
     2 #include <math.h>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int cnt, N, P, W, H, a, S;
     8     int as[1001];
     9     cin >> cnt;
    10     while (cnt-- > 0)
    11     {
    12         cin >> N >> P >> W >> H;
    13         a = 0;
    14         
    15         for (int i = 0; i < N; i++)
    16             cin >> as[i];
    17         int max = W>H ? H : W;//最大的字体大小,一页只放一个字
    18         for (int i = max;; i--)
    19         {
    20             int lines = 0;//需要多少行
    21             int perline = W / i;//一行可以放几个字
    22             for (int a_i = 0; a_i < N; a_i++)
    23                 lines += ceil(as[a_i] / (double)perline);
    24             if (ceil(lines / (H / i)) <= P)
    25             {
    26                 cout << i << endl;
    27                 break;
    28             }
    29         }
    30     }
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    备份
    Ibatis_dataMapper
    查询成绩都大于80分的学生
    删除文件的工具
    从运行中启动收索引擎
    数据库Northwind
    搭建Android开发环境
    数据库知识结构
    数据库MedicineMis_STD
    数据库work
  • 原文地址:https://www.cnblogs.com/coolqiyu/p/5905406.html
Copyright © 2011-2022 走看看