第一题:旗鼓相当的对手

题目描述

有N个同学,每个同学三科成绩(每门分数<=150),如果两名同学<i,j>的总分不超过10分且单科分差不超过5分,则两个同学是旗鼓相当的对手,求总对数。

样例测试
AC代码
#include<bits/stdc++.h>
using namespace std;int main(){int N;        //参加的同学人数 cin>>N;int a[N][3];int sum=0;        //旗鼓相当的对手个数 int sum1,sum2;        //两个同学各自的总分 for(int i=0;i<N;i++){        //录入成绩 cin>>a[i][0]>>a[i][1]>>a[i][2];}for(int i=0;i<N-1;i++){sum1 = a[i][0]+a[i][1]+a[i][2];for(int j=i+1;j<N;j++){sum2 = a[j][0]+a[j][1]+a[j][2];if(abs(sum1-sum2)>10){    //判断总成绩分差continue;}else{                     //判断单科分差if(abs(a[i][0]-a[j][0])<=5 && abs(a[i][1]-a[j][1])<=5 && abs(a[i][2]-a[j][2])<=5){sum++; }    }}}cout<<sum;        //输出总个数 return 0;
}    
易错点

计算分差带绝对值abs()

切记数组下标从0开始


第二题:工艺品制作

题目描述

有一个长宽高分别为w,x,h的实心玻璃立方体,由1*1*1的方块组成,每个方块坐标(i,j,k)。现对该方块进行q次切割,切割出立方体空洞,每次切割的对角坐标为(x1,y1,z1)和(x2,y2,z2)且保证1<=w<=20,1<=q<=100,1<=x1<=x2<=w,1<=y1<=y2<=x,1<=z1<=z2<=h。求切割完成后剩余的小方块个数sum。

样例测试
AC代码
#include<bits/stdc++.h>
using namespace std;
int a[21][21][21];    //定义在函数外部的数组默认赋0 int main(){int sum=0;    //剩余方块个数 int w,x,h;    //长,宽,高 int q;        //切割次数 int x1,y1,z1,x2,y2,z2;    //两个切割点 cin>>w>>x>>h;cin>>q;while(q--){cin>>x1>>y1>>z1>>x2>>y2>>z2;for(int i=x1;i<=x2;i++){for(int j=y1;j<=y2;j++){for(int k=z1;k<=z2;k++){a[i][j][k] = 1;}}}}for(int i=1;i<=w;i++){for(int j=1;j<=x;j++){for(int k=1;k<=h;k++){if(a[i][j][k] == 0){sum++;}}}}cout<<sum;return 0;
}    
易错点

整型数组定义在main函数外部时,默认值为0


第三题:彩票摇奖

题目描述

现有一项彩票活动,规则如下:

  1. 每张彩票上印有 7 个各不相同的号码,且这些号码的取值范围为1~33

  1. 每次在兑奖前都会公布一个由7个各不相同的号码构成的中奖号码

  1. 设置特等奖和一到六等奖共7个奖项,对应猜中号码个数7~1,不考虑号码位置

依次输入小明购买的彩票个数、中奖号码以及小明购买的所有彩票号码,统计其各个奖项的中奖次数,从特等到六等排序。

样例测试
AC代码
#include<bits/stdc++.h>
using namespace std;
int price[7];    int main(){int num,s;    //彩票张数,相同号码个数 int a[7];    //中奖号码串int temp;    //每次输入购买号码 cin>>num;    //输入数据 for(int i=0;i<7;i++){cin>>a[i];}while(num--){s = 0;    //初始化相同个数为0 for(int i=0;i<7;i++){cin>>temp;for(int i=0;i<7;i++){if(temp==a[i]){s++;break;}}}if(s>0){price[7-s]++;    //对应奖项(特等~六等) }}for(int i=0;i<7;i++){   //输出结果 cout<<price[i]<<' '; }return 0;
}    

第四题:神奇的幻方

题目描述

幻方是一种很神奇的N*N 矩阵:它由数字1,2,3,⋯⋯,N*N 构成,且每行、每列及两条对角线上的数字之和都相同,构建方法如下:

现给定N,请按照上述方法构造N*N幻方。

样例测试
AC代码
#include<bits/stdc++.h>
using namespace std;
int price[7];    int main(){int N;        //幻方的边长(奇数)cin>>N;int num=N*N;        int K=1;     //初始值int a[N][N];    //定义幻方矩阵 memset(a,0,sizeof(a));    //初始化为0 a[0][N/2] = 1;         //第一行中间为 1 int row,column;        //上一个幻方的行、列row = 0;column = N/2; while(K<num){K++;if(row==0 && column!=N-1){    //1、第一行但不是最后一列 row = N-1;column++;a[row][column] = K;continue;}if(row!=0 && column==N-1){    //2、第一列但不是最后一行 row--;column = 0;a[row][column] = K;continue;}if(row==0 && column==N-1){    //3、右上角 row++;a[row][column] = K;continue;}if(row!=0 && column!=N-1){    //4、不是第一行也不是最后一列 if(a[row-1][column+1]==0){row--;column++;a[row][column] = K;continue;        }else{row++;a[row][column] = K;continue;}}}for(int i=0;i<N;i++){        //输出幻方for(int j=0;j<N;j++){cout<<a[i][j]<<' ';}cout<<endl;}return 0;
}    
易错点

定义静态数组时要用常量,若用不确定的变量N初始化数组长度,则可以用memset初始化数组的值。


第五题:珠心算测验

题目描述

某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

样例测试
AC代码
#include<bits/stdc++.h>
using namespace std;int main(){int num,tag;      //数字总数,该数字是否已进入数组 int sum=0;        //两数之和符合条件的对数 cin>>num;        int a[num];        //创建数组存储数字 for(int i=0;i<num;i++){cin>>a[i];}sort(a,a+num);    //排序后不用枚举比自己大的数,降低时间复杂度for(int i=2;i<num;i++){        //枚举第3位和以后的数 tag = 1;    //刷新数字状态 for(int j=0;j<i-1;j++){        //首位数字到枚举数字的前两位为止 for(int k=j+1;k<i;k++){    //次位数字到枚举数字的前一位为止 if(tag && a[j]+a[k]==a[i]){sum++;tag = 0;}}}} cout<<sum; return 0;
}
易错点

本题要寻找的是符合条件的数字的个数,而不是符合条件的算式个数,所以要使用一个标记tag,当某个数字第一次符合要求时总数+1,后续若该数字仍满足则总数不加。


第六题:爱与愁的心痛

题目描述

最近有n个不爽的事,每件事都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续m个刺痛值的和的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。

样例测试
AC代码
#include<bits/stdc++.h>
using namespace std;int main(){int n,m;        //n件事;求连续m件事的最小刺痛值 int temp,sum;    //临时最小值;每次连续m刺痛值的和 cin>>n>>m;int a[n];for(int i=0;i<n;i++){    //存储到数组 cin>>a[i];}for(int i=0;i<=n-m;i++){sum = 0;for(int j=i;j<i+m;j++){sum += a[j];}if(i==0){            //第一次计算sum值直接赋值给temp temp = sum;}else{                //后续赋最小值 temp = min(temp,sum); }} cout<<temp;return 0;
}
易错点

确定m宽的滑窗初始地址时,要保证能取到a[n-m],即i<=n-m。


第七题:插火把

题目描述

在游戏《我的世界》里选定n*n的空地,分别放置火把和萤石,可以照亮周围的一些区域,范围如下:

火把:|暗|暗| 光 |暗|暗|   萤石:|光|光| 光 |光|光||暗|光| 光 |光|暗|        |光|光| 光 |光|光||光|光|火把|光|光|        |光|光|萤石|光|光||暗|光| 光 |光|暗|        |光|光| 光 |光|光||暗|暗| 光 |暗|暗|        |光|光| 光 |光|光|

分别输入n(边长),m(火把数),k(萤石数)

第2~m+1行输入火把坐标,继而输入萤石坐标

最后输入可以生成怪物的格子数

样例测试
AC代码
#include<bits/stdc++.h>
using namespace std;
int T[110][110];    //最大的面积 int main(){int n,m,k;        //列数,火把数,萤石数 int x,y;        //火把 萤石的坐标 int sum=0;        //可以生成怪物的格子总数 cin>>n>>m>>k;for(int i=1;i<=m;i++){    //火把照亮 cin>>x>>y;x += 2;                //防止越界产生RE y += 2; for(int j=-2;j<=2;j++){T[x+j][y] = 1;T[x][y+j] = 1;}T[x-1][y-1]=T[x+1][y-1] = 1;    //补充四个角 T[x-1][y+1]=T[x+1][y+1] = 1;}for(int i=1;i<=k;i++){    //萤石照亮 cin>>x>>y;x += 2;y += 2;for(int j=0;j<=2;j++){for(int h=0;h<=2;h++){T[x+j][y+h] = 1;T[x+j][y-h]    = 1;T[x-j][y+h] = 1;T[x-j][y-h] = 1;        }}} for(int i=3;i<=n+2;i++){for(int j=3;j<=n+2;j++){if(T[i][j]==0){sum++;}}}cout<<sum;return 0;
}
易错点

对数组越界部分赋值会造成超时RE

洛谷题单难题总结——数组相关推荐

  1. 【洛谷OJ C++】洛谷题单101 入门2分支结构 题解及学习笔记

    洛谷题单101链接:https://www.luogu.com.cn/training/101#problems 笔记及题解目录: 学习笔记: P5710 [深基3.例2]数的性质 P5711 [深基 ...

  2. 洛谷题单 算法1-3 暴力枚举

    1 First Step (ファーストステップ) 题目背景 知らないことばかりなにもかもが(どうしたらいいの?) 一切的一切 尽是充满了未知数(该如何是好) それでも期待で足が軽いよ(ジャンプだ!) ...

  3. 【洛谷OJ C++】洛谷题单100 入门1顺序结构 题解及学习笔记

    洛谷平台题单100链接:https://www.luogu.com.cn/training/100#problems 目录 学习笔记: P1001 A+B Problem P1000 超级玛丽游戏 P ...

  4. 洛谷 题单2分支结构(freshman锻炼牛犇勿喷)

    第一题数的性质 题目描述 一些数字可能拥有以下的性质: 性质 1:是偶数: 性质 2:大于 4 且不大于 12. 小A 喜欢这两个性质同时成立的数字:Uim 喜欢这至少符合其中一种性质的数字:八尾勇喜 ...

  5. 洛谷题单的Python版题解(有需要的小伙伴可以来看看哦~!)

    我的洛谷博客 记得从这里搜索题目,分类有些问题.

  6. 洛谷题单1-7 搜索题解

    P1219 [USACO1.5]八皇后 Checker Challenge 这个是我最最开始的写法,也是篇幅最大的写法,每放一个棋子就考虑放这个棋子满不满足 每行每列,左斜线和右斜线都只有一个棋子,注 ...

  7. 洛谷题单 算法1-1 模拟和高精度

    1 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中 ...

  8. 洛谷题单 算法2-1 前缀和与差分

    前缀和是一种重要的预处理,能大大降低查询的时间复杂度,而差分则是一种和前缀和相对的策略. 海底高铁 题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元, ...

  9. 按照日期:蓝桥杯真题、洛谷题单、力扣题单汇总

    2020年 2022.03.23绝世武功 2020.12.26框子求循环数组的m个最大和 2020.12.28暴力三阶幻方 2020.12.29未名湖的烦恼 2021年 2021.01.25包子凑数 ...

最新文章

  1. ios 企业签名需要源文件么_苹果企业签名之iOS证书申请和签名文件生成
  2. linux 安装sap,Solman系列 安装SAP Solution Manager 7.1 on Suse Linux
  3. vlc windows 编译文档
  4. Java线程状态分析
  5. [译]JavaScript:ES6中的模板字符串简介
  6. java水泡_JAVA图像处理系列(八)——艺术效果:水泡
  7. leetcode 高薪_利用两种不同的方法解LeetCode第1312题:让字符串成为回文串的最少插入次数
  8. Socket TCP UDP
  9. 【Redis】Redis各个版本的下载安装教程
  10. 苹果CMSV10黑色自适应简约炫酷影视网站模板
  11. 【TCP-IP详解卷1-协议】第一章 概述
  12. MySQL必知必会pdf
  13. 半圆形进度条(html)
  14. MATLAB 数学应用 微分方程 常微分方程 求解非刚性ODE
  15. 史上最简单的springcloud微服务入门实例,开箱即用,工资翻倍不是梦
  16. (PHP)获取微信支付平台证书步骤
  17. python上手_10分钟上手python pandas
  18. Microsoftware Project 的安装和使用不需要连接project server
  19. R----stringr包介绍学习
  20. 计算机英语教程第六版pdf,计算机英语教程.pdf

热门文章

  1. NeuroImage: ADHD青少年右侧额下回皮层fMRI神经反馈的功能连接变化
  2. 微信朋友圈+html+字体颜色,微信新功能 酷炫的彩色微信名字 朋友圈彩色昵称设置方法...
  3. [Spark] GraphX入门
  4. 解决微信小程序数据渲染缓慢或卡顿的方法
  5. 【行业分析】打破食品行业供应链薄弱环节,建设数字化韧性供应链
  6. LCD与LED液晶显示屏
  7. 嵌入式技术栈之spi协议的时序
  8. ZAM 3D 制作简单的3D字幕 流程(二)
  9. WC2016 挑战NPC
  10. 你知道一本书封面的著、编著、编、主编分别是什么意思吗?