Files
2026-05-18 15:26:14 +08:00
..
2026-05-18 15:26:14 +08:00
2026-05-18 15:26:14 +08:00
2026-05-18 15:26:14 +08:00
2026-05-18 15:26:14 +08:00
2026-05-18 15:26:14 +08:00
2026-05-18 15:26:14 +08:00
2026-05-18 15:26:14 +08:00

1必做 二维极大点问题 *
Score 100
在一个二维平面上,如果有两个点(x1,y1)和(x2,y2)有比较关系x1>x2且y1>y2则称点(x1,y1)支配了(x2,y2)(x1,y1)是极大点。
当比较关系修改为x1≥x2且y1≥y2时支配关系会产生有趣的变化下面考虑这种情况。对于给定n个点的集合编程找出所有的极大点按照x坐标由小到大输出极大点的坐标。

输入格式:
输入包括两行第一行是正整数n表示是点的个数第二行包含n个点的坐标坐标值都是整数x坐标和y坐标范围从0到1000且输入数据中不存在坐标相同的点。

输出格式:
按x轴坐标最小到大的顺序输出所有极大点。
输出格式为:(x1,y1)(x2,y2)...(xk,yk)

输入样例:
5
1 2 2 2 3 1 2 3 1 4
输出样例:
(1,4)(2,3)(3,1)
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
Stack size limit
8192 KB

2 递归算法解决自然数拆分问题
Score 100

任何一个大于1的自然数n总可以拆分成若干个小于n的自然数之和试求n的所有拆分。

输入格式:
输入大于1的自然数n。

输出格式:
输出包含多行每行为自然数n的一种拆分表示为加法式的形式以拆分数非递减的次序输出。

输入样例1:
5
输出样例1:
1+4
1+1+3
1+1+1+2
1+1+1+1+1
1+2+2
2+3
输入样例2:
7
输出样例2:
1+6
1+1+5
1+1+1+4
1+1+1+1+3
1+1+1+1+1+2
1+1+1+1+1+1+1
1+1+1+2+2
1+1+2+3
1+2+4
1+2+2+2
1+3+3
2+5
2+2+3
3+4
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
Stack size limit
8192 KB
---

``` markdown
3 诚实人调查问题
Score 100
有N个人其中某些人是诚实的其他人可能会说谎。现在需要进行一项调查该调查由一系列测试构成每次测试如下进行选2个人然后提问对方是否诚实每个人的回答只能是“是”或者“否”。假定在这些人中所有诚实的人回答都是正确的而其他人的回答则不能肯定是否正确。如果诚实的人数>N/2试设计一个调查算法以最小的测试次数从其中找出一个诚实的人。

输入格式:
第一行为一个不超过100的正整数N表示参与调查的总人数接下来的N行每行或者是1或者是0其中1代表诚实的人0代表会说谎的人注意1的个数>N/2。

输出格式:
正整数K表示第K个人是诚实的。
(若有多个答案,请输出最小的一个,如输入样例的对应答案11121516均满足其中最小的为11)

输入样例:
在这里给出一组输入。例如:

16
1
0
1
0
1
1
0
0
1
0
1
1
1
0
1
1
输出样例:
在这里给出相应的输出。例如:

11
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
Stack size limit
8192 KB
4必做 带有期限的作业调度问题 *
Score 100
带有期限的作业调度问题要解决的是操作系统中单机、无资源约束且每个作业可在等量时间内完成的作业调度问题,形式化描述为:

只能在一台机器上处理 n 个作业,每个作业 i=1,...,n 均可在单位时间内完成。
每个作业 i 都有一个期限值 d 
i

 >0 d 
i

  是整数)。
当且仅当作业 i 在它的截止期限前被完成时获得 p 
i

 >0 的效益;
问题的可行解是这 n 个作业的一个子集合。集合中的每个作业都能在各自的截止期限之前完成,产生一个作业效益之和 ∑p 
i

  。具有最大效益值的可行解就是最优解。
输入格式:
第一行为一个正整数n表示作业的个数
接下来的 n 行,每行两个正整数(中间用空格隔开),表示每个作业 i 的截止期限 d 
i

  和按期完成产生的效益p 
i

 。
输出格式:
一行一个整数,给出最优解的效益值。
输入样例1:
4
1 20
2 15
2 100
1 10
输出样例1:
120
输入样例2:
6
2 25
3 20
3 15
2 10
4 1
4 5 
输出样例2:
65
数据范围
d 
i

 ≤n≤10 
6
 ,p 
i

 ≤10 
9
 

Code Size Limit
16 KB
Time Limit
1000 ms
Memory Limit
512 MB
Stack size limit
8192 KB
5 买股票问题
Score 100
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
对该股票可以进行多次买卖操作,请设计一个算法,来计算所能获取的最大利润。注意,在对该股票买卖操作过程中,要求在再次购买前,出售掉之前的股票。

输入格式:
第 1 行1个整数n, 表示数组元素数。

第2行n个整数表示股票价格。

输出格式:
一个整数,表示所能获得的最大利润。

输入样例1:
6
7 1 5 3 6 4
输出样例1:
7
解释:在第 2 天买入,在第 3 天卖出, 获得利润 = 5-1 = 4 。随后,在第 4 天买入,在第 5 天卖出, 获得利润 = 6-3 = 3 。

输入样例2:
5
1 2 3 4 5
输出样例2:
4
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
Stack size limit
8192 KB
6 集合问题
Score 100
给定n个集合A1A2An每个集合都由连续的正整数构成即
Ai={x| ai<= x<= bi} i=1,2,...,n
设计一个算法求最小的集合S使得对每个i=1,2,...,n|S ∩Ai|≠∅,即每个Ai至少含有S中的一个数。

输入格式:
第1行是n表示集合的个数
第2行到第n+1行分别是这n个集合的最小正整数和最大正整数。

输出格式:
第1行是集合S按照从小到大的顺序。

输入样例1:
5
1 6
3 4
2 8
4 10
3 7
输出样例1:
4
输入样例2:
5
1 7
7 9
5 8
2 6
9 10
输出样例2:
6 9
Code Size Limit
16 KB
Time Limit
100 ms
Memory Limit
64 MB
Stack size limit
8192 KB