随笔分类 -  二分法

二分查找
聪明的质检员
摘要:聪明的质检员clever.pas【问题描述】小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi。检验矿产的流程是:1、给定m个区间[Li,Ri];2、选出一个参数W;3、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi:Yi = ∑1*∑vj,j∈[Li, Ri]且wj ≥ W,j是矿石编号这批矿产的检验结果Y 为各个区间的检验值之和。即:Y = ∑Yi,i ∈[1, m]若这批矿产的检验结果与所给标准值S相差太多,就需要再去检验另一批矿产。小T不想费时间去检验另一批矿产,所以他想通过调整参数W的值, 阅读全文

posted @ 2013-12-12 22:26 生活不变心在变 阅读(487) 评论(0) 推荐(0)

山头狙击战
摘要:山头狙击战battle.pas【问题描述】Lucky为了掩护大部队,单枪匹马同敌人周旋,后来被敌人包围在某山头……等等,为什么怎么听怎么像狼牙山五壮士!不过不用着急,这次Lucky携带了足够的弹药,完全可以将涌上来的敌人一个一个干掉。Lucky是个神枪手,只要他的枪膛中有子弹,他就能将在他射程m(用从敌人位置到山头的直线距离算)以内的一个敌人瞬间射杀。但如果在射程内没有敌人,出于节约子弹考虑和面子问题,Lucky会等待敌人靠近然后射击。正当Lucky为自己的强大而自我膨胀时,他忽然发现了一个致命的失误:他携带的枪是单发枪,每射出一发子弹都必须花k秒钟的时间装子弹。而凶残的敌人才不会花时间等你换 阅读全文

posted @ 2013-12-12 22:23 生活不变心在变 阅读(477) 评论(0) 推荐(0)

黄金分割
摘要:黄金分割(gold.pas)【问题描述】两个数之比越接近黄金分割比例,就越完美。现在给你N个数,请挑出一对最完美的数。【输入文件】gold.in第一行,一个数n表示数的个数;(2<=n<=106)第二行,共n个数,表示每个数,两个数之间用空格分开。(0<=xi<=106)【输出文件】gold.out两行,每行一个数,表示最完美的一对数。【样例输入】42 3 4 6【样例输出】23【说明】你可以认为黄金分割比就是0.6180339887498949 阅读全文

posted @ 2013-12-12 22:10 生活不变心在变 阅读(238) 评论(0) 推荐(0)

数字距离
摘要:数字距离dist.pas【问题描述】有一组数互不相同的数,规定两个元素之间的距离为两个元素序号的差的绝对值。求任意两个元素之间的距离。【输入文件】dist.in第一行,一个数n,表示这组数的个数。(2<=N<=106)第二行,共n个数,数与数之间有一个空格。(|xi|<=109)第三行,一个数q,表示询问q次(1<=q<=106)以下q行,每行两个数a, b(保证这两个数都在这组数中)【输出文件】dist.out共q行,每行一个数,表示两个数之间的距离。【样例输入】51 3 5 6 818 3【样例输出】3 阅读全文

posted @ 2013-12-12 22:09 生活不变心在变 阅读(328) 评论(0) 推荐(0)

化装晚会
摘要:化装晚会party.pas【问题描述】万圣节又到了!Farmer John打算带他的奶牛去参加一个化装晚会,但是,FJ只做了一套能容 下两头总长不超过S(1 <= S <= 1,000,000)的牛的恐怖服装。FJ养了N(2 <= N <= 20,000)头按1..N顺序编号的奶牛,编号为i的奶牛的长度为L_i(1 <= L_i <= 1,000,000)。如果两头奶牛的总长度不超过S,那么她们就能穿下这套服装。FJ想知道,如果他想选择两头不同的奶牛来穿这套衣服,一共有多少种满足条件的方案。【输入格式】party.in第1行: 2个用空格隔开的整数:N 和 阅读全文

posted @ 2013-12-12 21:56 生活不变心在变 阅读(435) 评论(0) 推荐(0)

无穷的序列
摘要:无穷的序列unlessseq.pas【问题描述】有一个无穷序列如下:110100100010000100000…请你找出这个无穷序列中指定位置上的数字。【输入格式】unlessseq.in第一行一个正整数N (N≤1500000),表示询问次数;接下来的N行每行一个正整数Ai(Ai≤109),Ai表示在序列中的位置。【输出格式】unlessseq.outN行,每行为0或l,表示序列第Ai位上的数字。【样例输入】431476【样例输出】0010 阅读全文

posted @ 2013-12-12 21:53 生活不变心在变 阅读(301) 评论(0) 推荐(0)

查找数字
摘要:查找数字findnum.pas【问题描述】有一组数,请找出任意一个数在数组中的个数。【输入文件】findnum.in第一行,一个数n,表示这组数的个数。(2<=N<=106)第二行,共n个数,数与数之间有一个空格。(|xi|<=109)第三行,一个数q,表示询问q次(1<=q<=106)以下q行,每行一个数a【输出文件】findnum.out共q行,每行一个数,表示这个数在数组中的个数。【样例输入】51 3 3 6 8283【样例输出】12 阅读全文

posted @ 2013-12-12 21:50 生活不变心在变 阅读(224) 评论(0) 推荐(0)

木棍分割
摘要:木棍分割stick.pas【问题描述】有n根木棍,第i根木棍的长度为Li,n根木棍依次连结在一起,总共有n-1个连接处.现在允许你最多砍断m个连接处,砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小,并且输出使得总长度最大的一段长度最小。【输入格式】stick.in输入文件第一行有2个数n,m接下来n行每行一个正整数Li,表示第i根木棍的长度。【输出格式】stick.out一个数,表示总长度最大的一段的长度最小值。【样例输入】3 21110【样例输出】10【数据范围】n<=50000,0<=m<=min(n-1,1000)1<=Li<=1000 阅读全文

posted @ 2013-12-12 21:48 生活不变心在变 阅读(300) 评论(0) 推荐(0)

月度花费
摘要:月度花费expense.pas【问题描述】Farmer John是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每个月的正常运转的。他已经计算了他以后 N(1<=N<=100,000)个工作日中每一天的花费moneyi(1<=moneyi<=10,000),他想要为他连续 的M(1<=M<=N)个被叫做“清算月”的结帐时期做一个预算,每一个“清算月”包含一个工作日或更多连续的工作日,每一个工作日都仅被包 含在一个“清算月”当中。FJ的目标是安排这些“清算月”,使得每个清算月的花费中最大的那个花费达到最小,从而来决定他的月度支 阅读全文

posted @ 2013-12-12 21:47 生活不变心在变 阅读(247) 评论(0) 推荐(0)

划分数列
摘要:划分数列seqa.pas【问题描述】给你一个有n个正整数元素的数列,要求把它划分成k段,使每段元素和的最大值最小。【输入格式】sqea.in输入第一行两个正整数n,k第二行为此数列ai。【输出格式】sqea.out一个数,表示每段元素和的最大值最小的那个数。【样例输入】5 22 1 3 4 5【样例输出】9【数据范围】n <= 100000, k <= n, 0<=ai <= 109 阅读全文

posted @ 2013-12-12 21:43 生活不变心在变 阅读(536) 评论(0) 推荐(0)

导航