欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2018-2019赛季多校联合新生训练赛第四场

程序员文章站 2022-04-02 21:51:37
...

问题 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;
}