2018-2019赛季多校联合新生训练赛第四场
问题 A: 数一数时间限制: 1 Sec 内存限制: 128 MB
题目描述
星期天早上,小明开始做数学家庭作业。因为小明成绩很优异,觉得题目太简单了,思考出道难点的数学题去学校考考同学,他注意到:数学书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。
哈哈,题目有了,请问数学书的第x页到第y页共有多少张纸呢?
例如:该书的第81页到第92页,共有7张纸。
输入一行两个数x、y如题所述,用空格隔开。
输出一个数,表示纸张数。
样例输入复制样例数据
81 92
样例输出7
提示50%:0<y-x<=15;
100%:1<=x,y<=longint;0<y-x<longint。
#include<stdio.h>
int main()
{
int x,y;
scanf("%d%d",&x,&y);
if(x%2==0&&y%2==0||x%2!=0&&y%2!=0)
printf("%d\n",(y-x)/2+1);
if(x%2!=0&&y%2==0)
printf("%d\n",(y-x)/2+2);
if(x%2==0&&y%2!=0)
printf("%d\n",(y-x)/2+1);
return 0;
}
问题 B: 博物馆时间限制: 1 Sec 内存限制: 128 MB
提交: 566 解决: 192
题目描述
从前,有一个偌大的博物馆,每天都会有数以万计的人们来参观,欣赏这里的艺术作品。这一天,博物馆来了N批人,第i批人有Ai个人以及一个导游组成,他们依次到达,但同时也有一些批次的人离开,由于人次太多,博物馆的管理人员递给你一些人数表,就请你来统计一下剩下多少人。
输入第一行是个整数N,接下来N行。每行两个数,第一个数X,如果X=0则后面接一个数Ai,表示来了Ai个人;如果X=1,那么接下来就有一个数Y,表示来的人中的第Y批离开了。
输出一个数,表示剩下多少人。
样例输入复制样例数据
6
0 5
0 6
1 1
0 7
0 8
1 3
样例输出16
提示有四批人,每批人要加上一位导游,分别是6,7,8,9人,离开的是第1和3批,即走了6+8=14人,剩7+9=16人。
对于30%的数据,1≤N≤100,1≤Ai≤1000;
对于100%的数据,1≤N≤1000000,1≤Ai≤1000000。
保证:X只为0或1,Y一定符合要求。
#include<stdio.h>
int a[1000001][2],b[1000001];
/*在main函数中定义是不行的,
C中定义整形数组长度为1000000只能有两种方法,
1是声明一个全局数组,2是在需要的函数中用malloc函数动态申请*/
int main()
{
int i,n,k=1,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i][0],&a[i][1]);
if(a[i][0]==0)
{
b[k]=a[i][1]+1;
k++;
sum=sum+a[i][1]+1;
}
else
sum=sum-b[a[i][1]];
}
printf("%d\n",sum);
return 0;
}
这个题主要是卡到了数组定义上
问题 C: 旅游时间限制: 1 Sec 内存限制: 128 MB
提交: 532 解决: 199
题目描述
Lanlan的好朋友Qiqi来到了东莞,她决定带Qiqi去东莞的名胜景区旅游,以此增进友谊。但Qiqi不喜欢去拥挤度大于k的景点,而且旅游的时间不能是断开的。Lanlan现在知道了明天n个连续时间景区的拥挤度,她想知道她最多能陪Qiqi旅游多久。
输入第一行两个整数n,k。
第二行有n个整数表示每个时间的拥挤程度(数值小于1000)。
输出一个整数表示Lanlan最多能陪Qiqi的时间。
样例输入复制样例数据
20 2
1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
样例输出16
提示60%的数据 N<=1000
100%的数据 N<=100000
借用别人的题解,还没学C++,尴尬
#include<bits/stdc++.h>
using namespace std;
int a[100010];
int main() {
int maxn=-1;
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++) {
cin>>a[i];
}
int sum=0;
for(int i=0;i<n;i++) {
if(a[i]<=k)
sum++;
else
sum=0;
maxn=max(maxn,sum);
}
cout<<maxn;
}