洛谷-入门4-数组1
P1428 小鱼比可爱题目描述人比人气死人鱼比鱼难死鱼。小鱼最近参加了一个“比可爱”比赛比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排头都朝向左边然后每只鱼会得到一个整数数值表示这只鱼的可爱程度很显然整数越大表示这只鱼越可爱而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边所以每只鱼只能看见在它左边的鱼的可爱程度它们心里都在计算在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。输入格式第一行输入一个正整数 n表示鱼的数目。第二行内输入 n 个非负整数用空格间隔依次表示从左到右每只小鱼的可爱程度 ai。输出格式一行输出 n 个整数用空格间隔依次表示每只小鱼眼中有多少只鱼不如自己可爱。输入输出样例输入 #1复制6 4 3 0 5 1 2输出 #1复制0 0 0 3 1 2说明/提示对于 100% 的数据1≤n≤1000≤ai≤10。实现代码#include bits/stdc.h using namespace std; int a[11]; int main(){ int n,cnt0; cinn; for(int i1;in;i){ cina[i]; } for(int i1;in;i){ cnt0; for(int ji-1;j0;j--) if(a[j]a[i]){ cnt; } coutcnt ; } return 0; }P1427 小鱼的数字游戏题目描述小鱼最近被要求参加一个数字游戏要求它把看到的一串数字 ai长度不一定以 0 结束记住了然后反着念出来表示结束的数字 0 就不要念出来了。这对小鱼的那点记忆力来说实在是太难了你也不想想小鱼的整个脑袋才多大其中一部分还是好吃的肉所以请你帮小鱼编程解决这个问题。输入格式一行内输入一串整数以 0 结束以空格间隔。输出格式一行内倒着输出这一串整数以空格间隔。输入输出样例输入 #1复制3 65 23 5 34 1 30 0输出 #1复制30 1 34 5 23 65 3说明/提示数据规模与约定对于 100% 的数据保证 0≤ai≤231−1数字个数不超过 100有且仅有末尾的一个数字是 0。实现代码#includebits/stdc.h using namespace std; long long a[100000]; long long s[100000]{0}; int main(){ int n; int t0; while(cinnn!0){ a[t]n; } for(int it-1;i0;i--){ couta[i] ; } return 0; }P5727 【深基5.例3】冰雹猜想题目描述给出一个正整数 n然后对这个数字一直进行下面的操作如果这个数字是奇数那么将其乘 3 再加 1否则除以 2。经过若干次循环后最终都会回到 1。经过验证很大的数字7×1011都可以按照这样的方式比变成 1所以被称为“冰雹猜想”。例如当 n 是 20变化的过程是 20→10→5→16→8→4→2→1。根据给定的数字验证这个猜想并从最后的 1 开始倒序输出整个变化序列。输入格式输入一个正整数 n。输出格式输出若干个由空格隔开的正整数表示从最后的 1 开始倒序的变化数列。输入输出样例输入 #1复制20输出 #1复制1 2 4 8 16 5 10 20说明/提示数据保证1≤n≤100。实现代码#includebits/stdc.h using namespace std; long long a[100000]; int main(){ int n; cinn; int mn; int t0; while(n!1){ if(n%20){ a[t]n/2; nn/2; } else{ a[t]3*n1; n3*n1; } } for(int it-1;i0;i--){ couta[i] ; } coutm; return 0; }P1047 [NOIP 2005 普及组] 校门外的树题目描述某校大门外长度为 l 的马路上有一排树每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴马路的一端在数轴 0 的位置另一端在 l 的位置数轴上的每个整数点即 0,1,2,…,l都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数区域之间可能有重合的部分。现在要把这些区域中的树包括区域端点处的两棵树移走。你的任务是计算将这些树都移走后马路上还有多少棵树。输入格式第一行有两个整数分别表示马路的长度 l 和区域的数目 m。接下来 m 行每行两个整数 u,v表示一个区域的起始点和终止点的坐标。输出格式输出一行一个整数表示将这些树都移走后马路上剩余的树木数量。输入输出样例输入 #1复制500 3 150 300 100 200 470 471输出 #1复制298说明/提示【数据范围】对于 20% 的数据保证区域之间没有重合的部分。对于 100% 的数据保证 1≤l≤1041≤m≤1000≤u≤v≤l。【题目来源】NOIP 2005 普及组第二题实现代码#includebits/stdc.h using namespace std; long long a[100000]; int main(){ int n; cinn; int m; cinm; for(int i0;in;i){ a[i]1; } for(int i1;im;i){ int x,b; cinxb; for(int ix;ib;i){ a[i]0; } } int sum0; for(int i0;in;i){ if(a[i]1){ sum; } } coutsum; return 0; }P5728 【深基5.例5】旗鼓相当的对手题目描述现有 N 名同学参加了期末考试并且获得了每名同学的信息语文、数学、英语成绩均为不超过 150 的自然数。如果某对学生 ⟨i,j⟩ 的每一科成绩的分差都不大于 5且总分分差不大于 10那么这对学生就是“旗鼓相当的对手”。现在想知道这些同学中有几对“旗鼓相当的对手”同样一个人可能会和其他好几名同学结对。输入格式第一行一个正整数 N。接下来 N 行每行三个整数其中第 i 行表示第 i 名同学的语文、数学、英语成绩。最先读入的同学编号为 1。输出格式输出一个整数表示“旗鼓相当的对手”的对数。输入输出样例输入 #1复制3 90 90 90 85 95 90 80 100 91输出 #1复制2说明/提示数据保证2≤N≤1000 且每科成绩为不超过 150 的自然数。实现代码#includebits/stdc.h using namespace std; long long a[1000][1000]; int main(){ int n; cinn; for(int i1;in;i){ cina[i][1]a[i][2]a[i][3]; a[i][4]a[i][1]a[i][2]a[i][3]; } int x0; for(int i1;in-1;i){ for(int ji1;jn;j){ if(a[j][1]-a[i][1]5a[j][1]-a[i][1]-5){ if(a[j][2]-a[i][2]5a[j][2]-a[i][2]-5){ if(a[j][3]-a[i][3]5a[j][3]-a[i][3]-5){ if(a[i][4]-a[j][4]10a[i][4]-a[j][4]-10){ x; } } } } } } coutx; return 0; }