当前位置: 首页 > news >正文

排版页数


latex自然是广大研究人员最喜欢使用的科研论文排版工具之一。
月神想在iPhone 上查阅写好的paper,但是无赖iPhone 上没有月神喜欢使用的阅读软件,于是月神也希望像tex老爷爷Donald Knuth那样自己动手do it yourself一个。
在DIY这个阅读软件的过程中,月神碰到一个问题,已知iPhone屏幕的高为H,宽为W,若字体大小为S(假设为方形),则一行可放W / S(取整数部分)个文字,一屏最多可放H / S (取整数部分)行文字。
已知一篇paper有N个段落,每个段落的文字数目由a1, a2, a3,...., an表示,月神希望排版的页数不多于P页(一屏显示一页),那么月神最多可使用多大的字体呢?

import java.util.*;

public class ks_paper_tex {
	
	public static int count_page(int [] array, int count_limit, int line_limit) {
		int lines = 0;
		for(int i=0; i<array.length; i++) {
			lines += (array[i]+count_limit-1)/count_limit;
		}
		return (line_limit+lines-1)/line_limit;
	}
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int max_int = Integer.MAX_VALUE;
		int n, page_max, height, width, left, right, flag, mid;
		while(true) {
			if(scan.hasNextInt()==false) {
				break;
			}
		n = scan.nextInt();
		page_max = scan.nextInt();
		height = scan.nextInt();
		width = scan.nextInt();
		scan.nextLine();
		String [] strs = scan.nextLine().split(" ");
		int [] array = new int[n];
		int i = 0;
		for(String c: strs) {
			if(c!= " ") {
			array[i++] = Integer.parseInt(c); 
			}
		}
		
		left=1; right=width;
		flag = -1;
		mid=-1;
		while(left<right) {			
			mid = (left+right+1) >> 1;
			int count_limit = width/mid;
			int line_limit = height/mid;
			int page_count = count_page(array, count_limit, line_limit);
			//System.out.println(page_count);
			if(page_count==page_max) {flag=1; break;}
			else if(page_count<page_max) left=mid;
			else right=mid-1;
		}
		System.out.println(left);
		System.out.println(right);
		System.out.println(flag);
		if(flag>0)
		System.out.println(mid);
		else
		System.out.println(left);
		}
	}// while input
}

相关文章:

  • 最长回文串
  • 分享:Sersync试用
  • pstreegdb
  • 一点正则表达式的学习碎片
  • 链表分割
  • void*
  • python requests.session 与 requests
  • 爬虫_urlencode问题
  • 如何实现MySQL的自动备份
  • 魔术索引
  • PIC数据采集系统---接口功能测试
  • 字符串排列
  • 数组中的逆序对
  • Windows 8 应用商店应用开发 之 氛围光传感器
  • 子串判断
  • 收藏网友的 源程序下载网
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【mysql】环境安装、服务启动、密码设置
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Brief introduction of how to 'Call, Apply and Bind'
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Java IO学习笔记一
  • JS函数式编程 数组部分风格 ES6版
  • MySQL的数据类型
  • Spring Cloud Feign的两种使用姿势
  • ubuntu 下nginx安装 并支持https协议
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 程序员该如何有效的找工作?
  • 检测对象或数组
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 我有几个粽子,和一个故事
  • 新手搭建网站的主要流程
  • 原生 js 实现移动端 Touch 滑动反弹
  • # Panda3d 碰撞检测系统介绍
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (补)B+树一些思想
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (分布式缓存)Redis哨兵
  • (四)c52学习之旅-流水LED灯
  • (五)Python 垃圾回收机制
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .equals()到底是什么意思?
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net Web项目创建比较不错的参考文章
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • @RunWith注解作用
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [Android]使用Android打包Unity工程
  • [BSGS算法]纯水斐波那契数列