2019年暑期-第二期模拟题
第一题 危险的实验(dangerous)
【题意分析】
小明最近在上化学课,他需要使用到n种化学物质来进行他的实验。在做实验的时候,他需要将所有化学物质放在桌面上,按次序排成一条直线。
然而每一种化学物质都是危险品,对于第i个化学物质,如果有另外一个化学物质距离它的距离小于ai,那么就会发生爆炸。
小明想知道如果要安全的完成他的实验,桌子最短可以多短。
将n个化学物质放在桌子上,给出它们与附近化学物质的安全距离,请问最短需要多长的桌子。
【输入格式】
第一行一个整数n,表示化学物质的个数。 第二行有n个整数,第i个整数ai表示第i个化学物质必须与其他化学物质保持的距离。
【输出格式】
输出一个整数,表示可以安全完成实验的桌子的最小长度
输入样例
3
3 1 2
输出样例
5
【数据范围】
20%的数据,1<=n<=20
50%的数据,1<=n<=100000
100%的数据,1<=n<=1000000,1<=ai<=100000
【试题难度】
★☆☆☆☆
第二题 字符串
【题意分析】
给出一个字符串s和t,求s中有多少个不重复的t。
【数据范围】
50%的数据,1<=字符串T长度<=20000, 1<=字符串S长度<=100
100%的数据,1<=字符串T长度<=1000000, 1<=字符串S长度<=100000。其中多数是随机产生。
【试题难度】
★★★☆☆
第三题 探测器
【题意分析】
一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到。
【输入格式】
第一行3个整数n,m,r
接下来m行,每行两个整数x,y表示第i个探测器的坐标
【输出格式】
能被探测到的点的个数
【样例输入】
5 2 1
3 3
4 2
【样例输出】
8
【数据范围】
1<=n,m<=100
【试题难度】
★★☆☆☆
阅读程序写结果
#include <stdlib>
using namespace std;
char st[100];
int main() {
scanf("%s", st);
for (int i = 0; st[i]; ++i) {
if (‘A’ <= st[i] && st[i] <= ‘Z’)
st[i] += 1;
}
printf("%s\n", st);
return 0;
}
输入:QuanGuoLianSai
输出:_________
#include <iostream>
using namespace std;
int n, m;
int findans(int n, int m) {
if (n == 0) return m;
if (m == 0) return n % 3;
return findans(n - 1, m) - findans(n, m - 1) + findans(n -
1, m - 1);
}
int main(){
cin >> n >> m;
cout << findans(n, m) << endl;
return 0;
}
输入:5 6
输出:_________