C/C++之(一)洛谷刷题及洛谷评测 上

简介: C/C++之(一)洛谷刷题及洛谷评测 上

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。

前段时间我们的实验室进行纳新,准备了一些题目,由于之前很少刷题的缘故,在这次刷题的过程中出现了很多的纰漏与问题。同时,我们选用的洛谷平台,对代码进行检查时,也会爆出各种问题,而我也不知道什么问题/(ㄒoㄒ)/~~,提交了很多次后我放弃了😄。评论区有没有大佬,或者刷题的朋友们,可以跟我分享一下刷题经验。🙇‍

目前正在自学C++,求大佬

关于洛谷

洛谷创建于2013年6月15日,至今已有数万用户,致力于为OIers/ACMers提供清爽、快捷的编程体验。它不仅仅是一个在线测题系统,更拥有强大的社区、在线学习功能。同时,许多教程内容都是由五湖四海的ers提供的,保证了内容的广泛性。无论是初学oi的蒟蒻,还是久经沙场的神犇,均可从洛谷Online Judge获益,也可以帮助他人,共同进步。

评测

洛谷评测系统搭建与Linux上,采用分布式集群保证评测效率,采用沙盒技术保证评测安全。目前,评测系统支持四种语言:C/C++/C++11/Pascal。其编译参数分别为:

C:gcc -DONLINE_JUDGE -Wall -fno-asm -std=c99 -lm

C++:g++ -DONLINE_JUDGE -Wall -fno-asm -std=c++98

C++11:g++ -DONLINE_JUDGE -Wall -fno-asm -std=c++11

Pascal:ppcx64 -dONLINE_JUDGE

在大牛模式下进行提交的所有题目或是有"O2优化"标签的题目在评测时均会自动开启O2优化,题目上传者或者管理员可根据需要自行开启。

各个评测状态

AC:Accept,程序通过。

CE:Compile Error,编译错误。

PC:Partially Correct,部分正确。

WA:Wrong Answer,答案错误。

RE:Runtime Error,运行时错误。

TLE:Time Limit Exceeded,超出时间限制。

MLE:Memory Limit Exceeded,超出内存限制。

OLE:Output Limit Exceeded,输出超过限制。

UKE:Unknown Error,出现未知错误。

常见“我在本地/xxOJ AC了、洛谷却不过”的原因

由于之前很少刷题的缘故,这次在洛谷刷题保守 WA 的困扰。求大佬指正!!!

【P5737】闰年展示

题目描述

输入 x,yx,y,输出 [x,y][x,y] 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。

输入格式

输入两个正整数 x,yx,y,以空格隔开。

输出格式

第一行输出一个正整数,表示 [x,y][x,y] 区间中闰年个数。

第二行输出若干个正整数,按照年份单调递增的顺序输出所有闰年年份数字。

输入输出样例

输入  

1989 2001

输出  

3

1992 1996 2000

说明/提示

数据保证,1582\le x < y \le 30001582≤x

#include<stdio.h>
int main()
{
  int x,y,year,n=0,i=0,a[1000];
  scanf("%d %d",&x,&y);
  for (year =x; year <= y;year++)
  {
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
    {
      a[i] = year;
      i++;
      n++;
    }
  }
  printf("%d\n",n);
  for (i = 0; i < n; i++)
  {
    printf("%d ",a[i]);
  }
  return 0;
}

【P5707】【深基2.例8】再分肥宅水

题目描述

现在有 tt 毫升肥宅快乐水,要均分给 nn 名同学。每名同学需要 22 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 33 位),以及一共需要多少个杯子。

输入格式

输入一个实数 tt 和一个正整数 nn,使用空格隔开。

输出格式

输出两行。

第一行输出一个三位小数,表示可以获得多少毫升饮料。第二行输出一个正整数,表示一共需要多少个杯子。

输入输出样例

输入  

500.0 3

输出  

166.667

6

说明/提示

对于所有数据,0\leq t\leq 100000≤t≤10000 且小数点后不超过 33 位,1\leq n\leq 10001≤n≤1000。

#include<stdio.h>
int main(){
  float t,x;
  int n;
  scanf("%f %d",&t,&n);
  x=t/n;
  printf("%0.3f\n",x); 
  printf("%d",n*2);
}

【P1427】 小鱼的数字游戏

题目描述

小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 a_iai(长度不一定,以 00 结束),记住了然后反着念出来(表示结束的数字 00 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

输入格式

一行内输入一串整数,以 00 结束,以空格间隔。

输出格式

一行内倒着输出这一串整数,以空格间隔。

输入输出样例

输入

3 65 23 5 34 1 30 0

输出

30 1 34 5 23 65 3

说明/提示

数据规模与约定

对于 100\%100% 的数据,保证 0 \leq a_i \leq 2^{31} - 10≤ai≤231−1,数字个数不超过 100100。

#include<stdio.h>
int main(){
  int array[100],i,j=1;
  while(j!=0){
      scanf("%d",&array[i]);
      j=array[i];
      i++;
  };
  int x=i-2;
  for(;x>=0;x--){
    printf("%d ",array[x]);
  }
  return 0;
}

【P1104】 生日

题目描述

cjf 君想调查学校 OI 组每个同学的生日,并按照年龄从大到小的顺序排序。但 cjf 君最近作业很多,没有时间,所以请你帮她排序。

输入格式

输入共有 22 行,

第 11 行为 OI 组总人数 nn;

第 22 行至第 n+1n+1 行分别是每人的姓名 ss、出生年 yy、月 mm、日 dd。

输出格式

输出共有 nn 行,

即 nn 个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)

输入输出样例

输入  

3

Yangchu 1992 4 23

Qiujingya 1993 10 13

Luowen 1991 8 1

输出  

Luowen

Yangchu

Qiujingya

说明/提示

数据保证,1

#include<bits/stdc++.h>
using namespace std;
int i,j,k,n,m;
struct sb{//结构体定义
  string name;//名字;
  int y,m,d,bian;//年,月,日,编号。
}a[1001]; 
int cmp(sb x,sb y){//开始结构体排序
  return x.y<y.y||x.y==y.y&&x.m<y.m||x.y==y.y&&x.m==y.m&&x.d<y.d||x.y==y.y&&x.m==y.m&&x.d==y.d&&x.bian>y.bian;
    //先按年排,再按月,日,编号。
}
int main()
{
  cin>>n;//输入人数
  for(i=1;i<=n;i++){
    cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;//输入
    a[i].bian=i;//记下输入顺序
  }
  sort(a+1,a+1+n,cmp);//开始快排
  for(i=1;i<=n;i++)//输出
  cout<<a[i].name<<endl;
  return 0;//完美结束
}

【P1223】 排队接水

题目描述

有 nn 个人在一个水龙头前排队接水,假如每个人接水的时间为 T_iTi,请编程找出这 nn 个人排队的一种顺序,使得 nn 个人的平均等待时间最小。

输入格式

第一行为一个整数 nn。

第二行 nn 个整数,第 ii 个整数 T_iTi 表示第 ii 个人的等待时间 T_iTi。

输出格式

输出文件有两行,第一行为一种平均时间最短的排队顺序;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。

输入输出样例

输入

10  

56 12 1 99 1000 234 33 55 99 812

输出

3 2 7 8 1 4 9 6 10 5

291.90

说明/提示

n \leq 1000,t_i \leq 10^6n≤1000,ti≤106,不保证 t_iti 不重复。

当 t_iti 重复时,按照输入顺序即可(sort 是可以的)

#include<bits/stdc++.h>
using namespace std;
struct people{
  int time;
  int num;
}peo[1005];
bool cmp(people p1,people p2){
  return p1.time<p2.time;
}
int main(){
  int n;
  double sum=0,average;
  cin >> n; 
  for(int i=1;i<=n;i++){
    cin >> peo[i].time;
    peo[i].num=i;
  } 
  sort(peo+1,peo+n+1,cmp);
  for(int i=1;i<=n;i++){
    cout << peo[i].num << " ";
    sum+=(n-i)*peo[i].time;
  }
  cout << endl;
  average=sum/n;
  printf("%.2f",average);
  return 0;
} 



相关文章
|
算法 C语言 C++
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
277 0
|
存储 C++
【五一创作】C++刷题 【入门4】数组
【五一创作】C++刷题 【入门4】数组
131 0
|
6月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
6月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
7月前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
7月前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
89 1
|
存储 C语言 C++
【C/C++刷题——leetcode】查找字符串中最大的子串
【C/C++刷题——leetcode】查找字符串中最大的子串
336 0
|
机器学习/深度学习 人工智能 C++
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
193 0
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
|
7月前
|
C++
C++刷题ACM输入数组
C++刷题ACM输入数组
75 0
|
7月前
|
C++
第十三届蓝桥杯B组C++(试题C:刷题统计)
第十三届蓝桥杯B组C++(试题C:刷题统计)
53 0