蓝桥杯刷题-入门题(终章二)

2023-10-21 13:40
文章标签 入门 蓝桥 杯刷题 终章

本文主要是介绍蓝桥杯刷题-入门题(终章二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🌼All Falls Down (Acoustic) - Adam Christopher - 单曲 - 网易云音乐

🌼曾经的你 - 许巍 - 单曲 - 网易云音乐

心仪的鞋子断码了,就去旁边店买一件漂亮的大衣。常去的面馆停业了,就去别家吃一碗好吃的粉。喜欢的人离开了,就好好上课好好工作挣更多的钱。有无数种方式可以让自己开心,也有无数条大路可以通向未来。人会成长,曾经沉迷的东西都会沦为可有可无的消遣。没有什么是不可替代的

目录

一,垂直直方图

二,Pell数列

三,谁做好事

四,爬楼梯

五,斐波那契数列

六,传染病

七,求f(x, n)

八,再求f(x, n)

总结


一,垂直直方图

P1069 - 垂直直方图 - New Online Judge (ecustacm.cn)

 

标签:入门题 

1,输入多行包含空格字符串,string s; + while(getline(cin, s)) + s.size()

头文件是#include<string>

2,输入完毕后,回车 + ctrl和z + 回车

3,注意,每个'*'和字母之间,还有个空格,而且不能打印多余空行/空格 

所以第一次输出了这个

THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
^Z***         **         *  * **         *  * *
*   *  *      *  * *
*   *  **  ** *  ***
*   * ***  ** ** ****
*  ******  ***** ****  **
**************************
ABCDEFGHIJKLMNOPQRSTUVWXYZ

考虑到空格,只需修改代码第20行往后的即可 

char c[Max + 1][26] = {' '};

改成

char c[Max + 1][51] = {' '};

其他对应着改

然后我就提交了 

WA 代码

#include<iostream>
#include<string> //getline(cin, s);
#include<algorithm> //sort()
using namespace std;
int a[60], b[60]; //a[]统计字母出现次数
int main()
{string s;while(getline(cin, s)) //每次输入都统计字符数for(int i = 0; i <= s.size(); ++i) {if(s[i] >= 'A' && s[i] <= 'Z')a[s[i] - 'A']++;}for(int i = 0; i < 26; ++i) b[i] = a[i];sort(b, b + 26); //对26个字母次数排序int Max = b[25]; //最大出现次数//由此确定了Max + 1行, 51列的二维数组char c[Max + 1][51] = {' '}; //初始化为空格for(int i = 0; i < 51; ++i) { //第0~50列if(i % 2 == 0) c[Max][i] = 'A' + i / 2;int j = Max - a[i];while(j <= Max - 1) {c[j++][2*i] = '*';}}for(int i = 0; i < Max + 1; ++i) {for(int j = 0; j < 51; ++j)cout<<c[i][j];if(i != Max) cout<<endl;}return 0;
}
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
^Z***                   **                   *     *   **                   *     *   *
*       *     *             *     *   *
*       *     * *     * *   *     * * *
*       *   * * *     * *   * *   * * * *
*     * * * * * *     * * * * *   * * * *     * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

跑对拍也没什么问题,咋就WA了呢,找不到任何问题

来了个别人相似思路的代码凑数算了 

AC 代码

#include<stdio.h>
int main()
{char a;int b[26]={0};while(scanf("%c",&a)!=EOF){if(a>=65&&a<=90);int k=a-65;b[k]++;}int max=0;int i=0;for(i=0;i<26;i++){if(b[i]>max){max=b[i];}}int h=max+1;char p[h][26]={' '};int x;int y;for(y=0;y<26;y++){for(x=h-1;x>=0;x--){if(x==h-1){int r=y+65;p[x][y]=r;continue;}if(b[y]>0){p[x][y]='*';b[y]--;}else{p[x][y]=' ';}}}int ii;int jj;for(ii=0;ii<h;ii++){for(jj=0;jj<26;jj++){if(jj==0)printf("%c",p[ii][jj]);elseprintf(" %c",p[ii][jj]);}printf("\n");}return 0;
}

二,Pell数列

P1070 - Pell数列 - New Online Judge (ecustacm.cn)

 

标签:入门题

第一次提交,AC 5%,因为我创建了个函数,每次输入数据都要重新算一遍,效率非常低

#include<iostream>
using namespace std;
int fac(int n)
{int a[10010] = {0};a[1] = 1, a[2] = 2;if(n <= 2) return a[n];else {for(int i = 3; i <= n; ++i)a[i] = a[i - 1] * 2 + a[i - 2];return a[n] % 32767;}
}
int main()
{int m;cin>>m;while(m) {int n;cin>>n;cout<<fac(n)<<endl;m--;}return 0;
}

第二次提交,还是运行错误,,还是AC 5%

#include<iostream>
using namespace std;
int a[100010];
int main()
{a[1] = 1, a[2] = 2;for(int i = 3; i <= 100000; ++i)a[i] = (a[i - 1] * 2 + a[i - 2]) % 32767;int m;cin>>m;while(m) {int n;cin>>n;cout<<a[n]<<endl;m--;}return 0;
}

第三次,AC 100%,真6啊,数组得开到100万,看漏题了🤦‍

#include<iostream>
using namespace std;
int a[1000010];
int main()
{a[1] = 1, a[2] = 2;for(int i = 3; i <= 1000000; ++i)a[i] = (a[i - 1] * 2 + a[i - 2]) % 32767;int m;cin>>m;while(m) {int n;cin>>n;cout<<a[n]<<endl;m--;}return 0;
}

三,谁做好事

P1071 - 谁做好事 - New Online Judge (ecustacm.cn)

标签:入门题 

分4种可能直接猜当然可以,显然是C做的好事,但我想用代码实现这个过程

#include<iostream>
using namespace std;
int main()
{char good = 'A';for(int i = 0; i < 4; ++i) {good = 'A' + i; //对应A,B,C,D四个人if((good != 'A') + (good == 'C') +(good == 'D') + (good != 'D') == 3) {cout<<good;break;}}return 0;
}
C

四,爬楼梯

P1072 - 爬楼梯 - New Online Judge (ecustacm.cn)

 

标签:入门题

审清题意很重要,我一开始以为是,每次可以走1~K级台阶,想了十分钟没想出来,百度也没有

后来一看,原来是走1级K级。。。

第一次AC 20%,原来是很多情况没考虑,所以修改了一下,分类讨论有点多

#include<iostream>
using namespace std;
int a[100];
int fac(int n, int k)
{for(int i = 4; i <= n; ++i) {if(i > k)a[i] = a[i - 1] + a[i - k];else if(i == k)a[i] = a[i - 1] + 1;elsea[i] = a[i - 1];}}
int main()
{int n, k;cin>>n>>k;if(n == k) cout<<2;if(n == 2 && k >= 3) cout<<1;if(n == 3 && k == 2) cout<<3;if(n >= 4 && n != k) {a[1] = 1; a[2] = 1 + 2 / k;if(k >= 4) a[3] = 1;if(k < 4) a[3] = 1 + 4 / k;fac(n, k);cout<<a[n];}return 0;
}

先对特殊情况讨论,再在fac()函数中对 i 和 k的大小关系讨论

考虑到蓝桥杯是IOI赛制,我们需要弄多点样例来检验,并根据样例快速调试

比如我列了4组数据检验是否正确 

5 4
310 10
28 3
135 2
8

 数据未必要多么大,但一定要尽可能考虑全,至于数组和int超限这个,按经验来 

五,斐波那契数列

P1073 - 斐波那契数列 - New Online Judge (ecustacm.cn)

 标签:入门题

这题比上一题简单一点,不用分类讨论

第一次时间超限AC 60%,老问题了,只需要打表一次,后面直接调用 

#include<iostream>
using namespace std;
int a[1000010];
int fac(int x)
{for(int i = 3; i <= x; ++i)a[i] = (a[i - 1] + a[i - 2]) % 1000;
}
int main()
{int t, x;cin>>t;a[1] = 1; a[2] = 1;fac(1000010);while(t) {cin>>x;cout<<a[x]<<endl;t--;}return 0;
}

六,传染病

P1074 - 传染病 - New Online Judge (ecustacm.cn)

标签:入门题

#include<iostream>
using namespace std;
int main()
{int n, x, sum = 1;cin>>n>>x;for(int i = 0; i < n; ++i) {sum += sum * x;}cout<<sum;return 0;
}

我试了试输入30 30,早就超过了long long的范围,正准备用高精度,一看通过率高达70%。。

七,求f(x, n)

P1075 - 求f(x,n) - New Online Judge (ecustacm.cn)

 

#include<iostream>
#include<cstdio> //printf()
#include<cmath> //sqrt()
using namespace std;
double a[110];
int main()
{double x;int n;cin>>x>>n;a[1] = sqrt(1 + x);for(int i = 2; i <= n && n >= 2; ++i) {a[i] = sqrt(i + a[i - 1]);}printf("%.2f", a[n]);return 0;
}

八,再求f(x, n)

P1076 - 再求f(x,n) - New Online Judge (ecustacm.cn)

 

标签:入门题

n 和 i 要声明为int,因为是数组下标,而数组本身和x要声明为double,这样才符合题目保留两位小数的要求

#include<iostream>
#include<cstdio> //printf()
using namespace std;
double a[55];
int main()
{double x;int n;cin>>x>>n;a[1] = x / (1 + x);for(int i = 2; i <= n && n >= 2; ++i) {a[i] = x / (i + a[i - 1]);}printf("%.2f", a[n]);return 0;
}

总结

1,76道入门题就告一段落了,最短路只学了个Floyd-Warshall和Dijkstra,也是半吊子的货

2,至于最小生成树,图的割点割边,二分图,Bellman-Ford最短路,就先放放,确实有点难,看了蓝桥杯遇到也不能速成做出来

3,下面该花5个小时学习树(然后《啊哈算法》结束学习)

4,接着开始刷题,自己选定3~5个最常考点,每个考点对着标签刷10道题左右

5,当然,我还报了2/13 ~ 3/13的蓝桥杯每日一题,跟着学总不会错

6,最后就是,20~22年蓝桥杯A,B,G组,刷30道C++蓝桥杯真题

7,最后就是总结,以及蓝桥杯编译环境的熟悉(OI确实比IOI难拿分)(没有反馈,只能多准备点例子调试自己的代码)

这篇关于蓝桥杯刷题-入门题(终章二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254761

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

MySQL入门到精通

一、创建数据库 CREATE DATABASE 数据库名称; 如果数据库存在,则会提示报错。 二、选择数据库 USE 数据库名称; 三、创建数据表 CREATE TABLE 数据表名称; 四、MySQL数据类型 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串类型 4.1 数值类型 数值类型 类型大小用途INT4Bytes整数值FLOAT4By

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是