C/C++之(三)洛谷刷题基础 上

简介: C/C++之(三)洛谷刷题基础 上

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

唯有热爱,可抵岁月漫长,唯有热爱,不畏世间无常!

P1428 小鱼比可爱

题目描述

人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。

输入格式

第一行输入一个正整数 nn,表示鱼的数目。

第二行内输入 nn 个正整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度 a_iai。

输出格式

一行,输出 nn 个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。

输入输出样例

输入 #1复制

6

4 3 0 5 1 2

输出 #1复制

0 0 0 3 1 2

说明/提示

对于 100\%100% 的数据,1 \leq n\leq 1001≤n≤100,0 \leq a_i \leq 100≤ai≤10。

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int n, i, j;
  cin >> n;
  int a[n];
  for (i = 0; i < n; i++)
  {
    cin >> a[i];
  }
  for (i = 0; i < n; i++)
  {
    int count = 0;
    for (j = 0; j < i; j++)
    {
      if (a[j] < a[i])
      {
        count++;
      }
    }
    cout << count << " ";
  }
}

P1427 小鱼的数字游戏

题目描述

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

输入格式

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

输出格式

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

输入输出样例

输入 #1复制

3 65 23 5 34 1 30 0

输出 #1复制

30 1 34 5 23 65 3

说明/提示

数据规模与约定

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

#include<bits/stdc++.h>
using namespace std;
int main(){
  int i,n[100],j=1;
  for(i=0;i<100;i++){
    cin >> n[i];
    if(n[i]==0){
      break;
    }
    j=i;
  }
  for(i=j;i>=0;i--){
    cout << n[i] << " ";
  }
} 

P1047 [NOIP2005 普及组] 校门外的树

题目描述

某校大门外长度为 ll 的马路上有一排树,每两棵相邻的树之间的间隔都是 11 米。我们可以把马路看成一个数轴,马路的一端在数轴 00 的位置,另一端在 ll 的位置;数轴上的每个整数点,即 0,1,2,\dots,l0,1,2,…,l,都种有一棵树。

由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入格式

第一行有两个整数,分别表示马路的长度 ll 和区域的数目 mm。

接下来 mm 行,每行两个整数 u, vu,v,表示一个区域的起始点和终止点的坐标。

输出格式

输出一行一个整数,表示将这些树都移走后,马路上剩余的树木数量。

输入输出样例

输入 #1复制

500 3

150 300

100 200

470 471

输出 #1复制

298

说明/提示

【数据范围】

对于 20\%20% 的数据,保证区域之间没有重合的部分。

对于 100\%100% 的数据,保证 1 \leq l \leq 10^41≤l≤104,1 \leq m \leq 1001≤m≤100,0 \leq u \leq v \leq l0≤u≤v≤l。

【题目来源】

NOIP 2005 普及组第二题

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int l, m, count = 0, x, y, i;
  cin >> l >> m;
  int a[10010]={0};
  while (m--)
  {
    cin >> x >> y;
    for (i = x; i <= y; i++)
    {
      if (a[i] == 0)
      {
        a[i] = 1;
      }
    }
  }
  for (i = 0; i <= l; i++)
  {
    if (a[i] == 0)
    {
      count++;
    }
  }
  cout << count;
}

P5733 【深基6.例1】自动修正

题目描述

大家都知道一些办公软件有自动将字母转换为大写的功能。输入一个长度不超过 100100 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。

输入格式

输入一行,一个字符串。

输出格式

输出一个字符串,即将原字符串中的所有小写字母转化为大写字母。

输入输出样例

输入 #1复制

Luogu4!

输出 #1复制

LUOGU4!

#include<bits/stdc++.h>
using namespace std;
int main(){
  string a;
  int i;
  cin >> a;
  for(i=0;i<a.size();i++){
    if(a[i]>='a'&&a[i]<='z'){
      a[i]-=32;
    }
  }
  cout << a;
} 

P1765 手机

题目描述

一般的手机的键盘是这样的:

要按出英文字母就必须要按数字键多下。例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x。0 键按一下会出一个空格。

你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。

输入格式

一行句子,只包含英文小写字母和空格,且不超过 200 个字符。

输出格式

一行一个整数,表示按键盘的总次数。

输入输出样例

输入 #1复制

i have a dream

输出 #1复制

23

说明/提示

NOI 导刊 2010 普及(10)

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[26]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
    int count=0,i;
    string s;
    getline(cin,s);
    for(i=0;i<s.size();i++){
        if(s[i]==' '){
            count++;
        }
        else if('a'<=s[i]&&s[i]<='z'){
            count=count+a[s[i]-'a'];//a[s[i]-'a']某个字母点击次数
        }
    }
    cout << count;
} 

1.将每个字母需要点击几次存入数组

2.计算空格+字母

相关文章
|
算法 C语言 C++
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
277 0
|
存储 C++
【五一创作】C++刷题 【入门4】数组
【五一创作】C++刷题 【入门4】数组
130 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】查找字符串中最大的子串
332 0
|
机器学习/深度学习 人工智能 C++
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
190 0
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
|
存储 算法 C++
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
357 0
|
7月前
|
C++
C++刷题ACM输入数组
C++刷题ACM输入数组
75 0