首页 > 代码库 > 【枚举算法Day1】20170529-2枚举算法专题练习

【枚举算法Day1】20170529-2枚举算法专题练习

20170529-2枚举算法专题练习

青岛二中日期

序号

题目名称

输入文件名

输出文件名

时限

内存

算法

难度

分类

081113

1

最大矩形

rectangle.in

rectangle.out

1s

256MB

枚举

1

02枚举

081031

2

回文

palin.in

palin.out

1s

256MB

枚举、优化

1

02枚举

081008

3

问题的设置

problemsetter.in

problemsetter.out

1s

256MB

排序+枚举

1

02枚举

081031

4

矩形着色

rectangles.in

rectangles.out

1s

256MB

枚举

2

02枚举

1.OneMoreRectangle一个矩形

【题目描述】

在一个平面上有一些矩形。矩形的边都与坐标轴平行。矩形允许相交、重叠。你的任务是,在平面上再放入一个边与坐标轴平行的矩形,且覆盖尽量多的已有矩形。

我们用四个整数来表示一个矩形,x1,y1,x2,y2,分别表示矩形的横纵坐标最小值、横纵坐标最大值。若矩形a的坐标为x1,y1,x2,y2,矩形A的坐标为X1,Y1,X2,Y2,则a能被A覆盖当且仅当X1<=x1<x2<=X2,且Y1<=y1<y2<=Y2

技术分享

【输入文件】第一行有三个整数n,X,Y,分别表示已有矩形个数、你要放入的矩形的边长(也就是X=X2-X1,Y=y2-y1)。你放入的矩形的大小必须同规定大小相同,位置由你决定。

接下来n行,每行4个整数x1,y1,x2,y2,表示已知矩形的坐标。

【输出文件】只有一个整数,表示你最多可以覆盖几个已有矩形。

【输入样例】

3 2 2

1 1 2 2

2 2 3 3

3 3 4 4

【输出样例】2

【数据规模和约定】

n<=50

所有给定坐标的绝对值不超过109

所有给定坐标保证x1<x2y1<y2

XY是不超过109的正整数。

 

2.Palindromes回文

【题目描述】一个回文串指的是,左右翻转后同原串相同的串。

给定一个数k(2<=k<=30000)和一个非空字符串SS的长度不超过30000且只含小写字母。请你求出,S中有多少个不同的长度为k的回文子串。一个串的子串指的是它的连续的一部分。

本题中,两个长度为k的子串不同,当且仅当它们的起始位置不同。

【输入文件】第一行整数k

第二行串S

【输出文件】一个整数,表示不同的回文串个数。

【输入样例】

5

ababab

【输出样例】2

【题解】

分析k的奇偶时,奇时需从k%2+1len-k%2枚举,而偶时需从k%2len-k%2开始向左右两枚举K长回文。(%表示求MOD

  定义function check(l,r,t:longint):boolean;//判断是否回文,l,r分别向两边“扩展” t=k/2

 

3.ProblemSetter(问题的设置)

【题目描述】

你要为一场比赛出题。从已有的题目中,你要选择三道不同的题:一道简单题、一道中等题,以及一道难题。每道题目都有一个整数的难度值。值越大,题目越难。假设E表示你选择的简单题的难度,M表示中等题难度,H表示难题难度,则必须保证E<=M<=H你希望难度差尽量接近,也就是说,假设D1=M-ED2=H-M,则|D1-D2|应该最小。如果有多种方案,选择其中E最小的。如果仍有多种方案,选择其中H最大的。如果还有多种方案,选择其中M最小的。

【输入文件】第一行一个整数n,表示题目数量。第二行n个整数,表示每道题的难度。

【输出文件】输出一行三个整数表示选择的题目难度。按照简单-中等-困难的顺序输出。中间用一个空格隔开。行尾不要有空格。

【输入样例】

5

1 2 3 4 5

【输出样例】

1 3 5

【样例说明】

    此时,D1=D2=2

【数据规模和约定】

3<=n<=50

难度是不超过1000的正整数。

4.ColoringRectangles着色的矩形

【题目描述】

在平面中给定N个与坐标轴平行的矩形,第i个矩形的左下角坐标是(x1[i],y1[i]),右上角坐标是(x2[i],y2[i])

你的任务是从中选择K个矩形,使得所选矩形可视面积最大。如果一些矩形有重叠,那么重叠部分只有编号最大的矩形才可视。换句话说,编号大的矩形“盖”在编号小的矩形之上。请你输出选择的K个矩形的编号。如果有多种方法,输出字典序最小的一组。

技术分享

【输入文件】

第一行两个整数N,K

第二行N个整数,表示x1[0]..x1[N-1]

第三行N个整数,表示y1[0]..y1[N-1]

第四行N个整数,表示x2[0]..x2[N-1]

第五行N个整数,表示y2[0]..y2[N-1]

【输出文件】

一行K个非负整数,表示选择的矩形的编号。编号之间用一个空格隔开。

【输入样例】

3 2

1 3 2

1 2 5

5 7 9

3 4 7

【输出样例】

1 2

【样例说明】

选择矩形0,1,面积为6+8=14

选择矩形0,2,面积为6+14=20

选择矩形1,2,面积为8+14=22

【数据规模和约定】

1<=N<=50

-10000<=所有坐标<=10000

对于任意ix1[i]<x2[i],y1[i]<y2[i]

【枚举算法Day1】20170529-2枚举算法专题练习