Font Size(微软2016校园招聘4月在线笔试)
2016-04-08 11:02
316 查看
题目1 : Font Size
时间限制:10000ms单点时限:1000ms
内存限制:256MB
描述
Steven loves reading book on his phone. The book he reads now consists of N paragraphs and the i-th paragraph contains ai characters.Steven wants to make the characters easier to read, so he decides to increase the font size of characters. But the size of Steven's phone screen is limited. Its width is W and height is H. As a result, if the font
size of characters is S then it can only show ⌊W / S⌋ characters in a line and ⌊H / S⌋ lines in a page. (⌊x⌋ is the largest integer no more than x)
So here's the question, if Steven wants to control the number of pages no more than P, what's the maximum font size he can set? Note that paragraphs must start in a new line and there is no empty line between paragraphs.
输入
Input may contain multiple test cases.The first line is an integer TASKS, representing the number of test cases.
For each test case, the first line contains four integers N, P, W and H, as described above.
The second line contains N integers a1, a2,
... aN, indicating the number of characters in each paragraph.
For all test cases,
1 <= N <= 103,
1 <= W, H, ai <= 103,
1 <= P <= 106,
There is always a way to control the number of pages no more than P.
输出
For each testcase, output a line with an integer Ans, indicating the maximum font size Steven can set.样例输入
2 1 10 4 3 10 2 10 4 3 10 10
样例输出
32
思路:没啥特殊的,就是暴力足以。
代码:
import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int tasks = sc.nextInt(); int N,W,H,P; ArrayList<Integer> output = new ArrayList<Integer>(); for(int i = 0 ;i < tasks ; i++) { N = sc.nextInt(); P = sc.nextInt(); W = sc.nextInt(); H = sc.nextInt(); ArrayList<Integer> a = new ArrayList<Integer>(); for(int temp = 0;temp<N;temp ++) { a.add(sc.nextInt()); } int S; for(S = 1 ; ;S++){ int charline = W/S; int line = H/S; if(charline == 0 || line == 0 )//考慮為0的情況 break; int totLine = line*P; int sumLine = 0; for(int j = 0; j<N ; j++) { double ai = a.get(j); int aiLine = (int)Math.ceil(ai/charline); sumLine = sumLine + aiLine; } if(sumLine > totLine) break; } output.add(S-1); } for(int i : output) System.out.println(i); } }
相关文章推荐
- 微软无线镭射简报鲨8000激光笔记本鼠标 - (2)
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- 微软镜像下载
- 书评:《算法之美( Algorithms to Live By )》
- 微软公布2013年必应搜索十大首页美图
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 微软Word 2007数学插件 Microsoft Math 提供下载
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 巧用微软EWF来保护系统
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解