2019 年第十届蓝桥杯省赛 B组 C++超详细题解
时间:2022-07-28
本文章向大家介绍2019 年第十届蓝桥杯省赛 B组 C++超详细题解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
A1.组队(枚举) 思路:我们直接观察图即可!
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"490"<<endl;
return 0;
}
B 2.年号字串 思路:明显是个26进制好吧 那么 2019 = 2*26^2 + 25 * 26 + 17
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"BYQ"<<endl;
return 0;
}
C3.数列求值(大数) 思路:考察递推呗,那你就推呗,每次只要后四位,所以对10000取余就行了。
#include<bits/stdc++.h>
#define maxn 100000004
using namespace std;
typedef long long ll;
int a[maxn];
int main(){
a[1] = 1;
a[2] = 1;
a[3] = 1;
for(ll i=4;i<=20190324;i++){
a[i] = (a[i-1]+a[i-2]+a[i-3])%10000;
}
cout<<a[20190324]<<endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"4659"<<endl;
return 0;
}
D4.数的分解(枚举) 思路:暴力去试试呗,没啥可讲的
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"40785"<<endl;
return 0;
}
E 5.迷宫(bfs) 思路:很直接的一个BFS题目。 就是方向数组你记得按照人家说的来。
#include<bits/stdc++.h>
#define maxn 50
using namespace std;
char a[maxn][maxn];
bool vis[maxn][maxn]={0};
int f[4][2] = {{1,0},{0,-1},{0,1},{-1,0}};
char ch[4]={'D','L','R','U'};
int n,m;
struct add{
int x;
int y;
add(int a,int b){
x=a;
y=b;
}
string s;//记录路径
};
void bfs(){
queue<add> q;
add p = {0,0};
p.s = "";
q.push(p);
vis[0][0] = 1;
while(!q.empty()){
add t = q.front();
q.pop();
if(t.x==n-1 && t.y == m-1){
cout<<t.s<<endl;
break;
}
for(int i=0;i<4;i++){
int dx = t.x +f[i][0];
int dy = t.y +f[i][1];
if(dx>=0 && dx<n&&dy>=0&&dy<m){
if(a[dx][dy]=='0' && !vis[dx][dy]){
add k(dx,dy);
k.s = t.s + ch[i];
q.push(k);
vis[dx][dy] = 1;
}
}
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
bfs();
return 0;
}
F 6.特别数的和(枚举) 思路:没啥可说的,大水题
#include<bits/stdc++.h>
using namespace std;
bool check(int k){
int res;
while(k!=0){
res = k % 10;
if(res==2 || res==0 || res==1 || res==9) return false;
k/=10;
}
return true;
}
int main(){
int n;
cin>>n;
int sum = 0;
for(int i=1;i<=n;i++){
if(!check(i)){
sum += i;
//cout<<i<<endl;
}
}
cout<<sum<<endl;
return 0;
}
G 7.完全二叉树的权值 思路:完全二叉树的层数为 log2(n) + 1; 每层有 pow(2,i)个节点;记得最后一层不一定满的
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define maxn 100003
using namespace std;
int a[maxn];
int qp(int a,int b){
int res = 1;
while(b){
if(b&1) res *= a;
a *= a;
b = b>> 1;
}
return res;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int ce = log2(n)+1;
int k = 0;
int sum;
int ans = -inf;
int res;
for(int i=1;i<ce;i++){
sum = 0;
for(int j=1;j<=qp(2,i-1);j++){
sum += a[k++];
}
if(sum > ans){
ans = sum;
res = i;
}
}
sum = 0;
for(int i=k;i<n;i++){
sum += a[i];
}
if(sum > ans){
res = ce;
}
cout<<res<<endl;
return 0;
}
H 8.等差数列 思路:没啥可说的就是一个公式 因为 an = a1 + (n-1)/d 然后怎么求N少啥你求啥就行了
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define maxn 1000005
using namespace std;
typedef long long ll;
ll a[maxn],b[maxn];
int main(){
ll n;
cin>>n;
for(ll i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
ll res;
bool flag = 0;
ll k;
res = a[1] - a[0];
if(res == 0) flag = 1;
for(ll i=2;i<n;i++){
b[i] = (a[i]-a[i-1]);
res = __gcd(b[i],res);
if(b[i] == 0){
flag = 1;
break;
}
}
if(flag){
cout<<n<<endl;
return 0;
}
ll ans = (a[n-1]-a[0])/res + 1;
cout<<ans<<endl;
return 0;
}
9.后缀表达式 思路:讨论吧,没啥好方法
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5+100;
ll a[maxn];
int main() {
int n,m;
cin >> n >>m;
int num = n+M+1;
int fu = 0;
ll sum = 0;
for (int i = 0; i < num; i++) {
cin >> a[i];
sum += a[i];
if(a[i] < 0) fu++;
}
sort(a, a+num);
if (m){ //如果有减法,需要对比总数目与负数数目
if (fu) { //如果有负数
if (fu == num) { //负数的数目与总目相等(必有一个负数无法通过加括号的形式变为正,故不能加回)
for(int i = 0; i < fu - 1; i++){
sum -= 2ll*a[i]; //输入时sum减过一次这些负数,现在是加回负元素,故应减去两倍(负负得正)。
}
} else { //负数的数目与总数目不相等(所有负数都可以变正,故将所有负数加回)
for (int i = 0; i < fu; i++) {
sum -= 2ll*a[i];
}
}
} else { //如果没有负数,就只有一个负号起作用,减去正数min
sum -= 2ll * a[0];
}
}
//如果没有减法,则最大值就直接是所有数的和
cout << sum << endl;
return 0;
}
最后一题很灵异,没有AC,太弱了,orz
- [WCF 4.0新特性] 默认绑定和行为配置
- mysql数据库及django用户名启用中文的方法
- 【学习笔记】先行者课程0109-rotate3d_变量、堆、栈
- 通过WCF扩展实现消息压缩
- Linux系统中的信号量机制
- 基于Linux与lpc3250开发板的交叉开发环境搭建
- WCF中关于可靠会话的BUG!!
- [WCF安全系列]谈谈WCF的客户端认证[Windows认证]
- ls命令实现分析
- [WCF安全系列]谈谈WCF的客户端认证[X.509证书认证]
- Openstack Trove概要
- [WCF安全系列]实例演示:TLS/SSL在WCF中的应用[SSL over TCP]
- [WCF安全系列]谈谈WCF的客户端认证[用户名/密码认证]
- [WCF安全系列]绑定、安全模式与客户端凭证类型:BasicHttpBinding
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 文件上传C:fakepath解决方案
- Asp.net web api部署在某些服务器上老是404
- Spring解决循环依赖的思路
- Spring中Bean的创建流程
- 详解RocketMQ事务消息
- 带你白嫖程序带宽限制命令Trickle
- Fix SSH客户端登录会话超时设置
- JAVA的泛型与反射的联合应用
- 专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)
- 计算上传文件的存放路径
- 按照list中实体类的某一属性排序
- java邮件开发
- java计算某日期之后的日期
- 文件上传之Html5 + jQuery上传、asp.net web api接收
- Struts2自定义结果视图(servlet验证码)