学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。
唯有热爱,可抵岁月漫长,唯有热爱,不畏世间无常!
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.将每个字母需要点击几次存入数组