当前位置: 首页 > news >正文

蓝桥杯第十六届c组c++题目及个人理解

本篇文章只是部分题目的理解,代码和思路仅供参考,切勿当成正确答案,欢迎各位小伙伴在评论区与博主交流!

题目:2025

题目解析

核心提取

要求的数中至少有1个0、2个2、1个5

代码展示

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
bool judge(int n)
{int x = n;int nums_2 = 0, nums_0 = 0, nums_5 = 0; while(x){int tmp = x % 10;if(tmp == 2) nums_2++;if(tmp == 0) nums_0++;if(tmp == 5) nums_5++;x /= 10;}if(nums_2 == 2 && nums_0 == 1 && nums_5 == 1) return true;else return false;
}
int main()
{int cnt = 0; for(int i = 1; i <= 20250412; i++){if(judge(i))//为真{cnt++;//计数器 + 1 }}cout << cnt;return 0;} 

题目:数位倍数

题目解析

核心提取 

数位之和%5为0

代码展示

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
bool judge(int n)
{int x = n;int sum_shuwei = 0;while(x){int tmp = x % 10;sum_shuwei += tmp;x /= 10;}if(sum_shuwei % 5 == 0) return true;else return false;
} 
int main()
{int cnt = 0; for(int i = 1; i <= 202504; i++){if(judge(i))//为真{cnt++;//计数器 + 1 }}cout << cnt;return 0;} 

题目:倒水

题目解析

核心提取 

第i个瓶子与第i + k个瓶子内水的颜色相同

第i个瓶子和第j(i + k)个瓶子内的水满足要求i < j

代码原理

这里的代码原理主要是凑,满足i<j才能结束凑

注意:减表示第i个瓶子内的水倒出      加表示第i + k个瓶子的水增加

代码展示

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 100000;
int a[N];
int main()
{int n = 0, k = 0;cin >> n >> k;for(int i = 1; i <= n; i++){cin >> a[i];}for(int i = 1; i <= n / 2; i++){for(int j = i + k; j <= n; j++){while(a[i] > a[j]){a[i]--;a[j]++;}}}int min_val = 0x3f3f3f3f;for(int i = 1; i <= n; i++){min_val = min(min_val, a[i]);}cout << min_val;return 0;} 

个人理解

本段代码可能存在一定的缺陷,当时在比赛中也想不出啥好的思路,于是就分析了一下这个例子,于是就发现可以凑,反正时间复杂度肯定超时,有新思路的小伙伴欢迎在评论区与博主分享 

题目:拼好数

题目解析

核心提取 

好数的定义:6的个数≥6个,且每一组最多只能有三个数

代码原理

红色框所框住的是重点

代码展示

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
struct Node
{string val;int val_6_nums;//统计6的个数 
}a[N];
int jisuan(string n)//统计6的个数 
{string x = n;int nums_6 = 0;for(int i = 0; i < n.size(); i++){if(n[i] == '6') nums_6++;}return nums_6;
}
bool cmp(Node a, Node b)
{if(a.val_6_nums != b.val_6_nums)return a.val_6_nums > b.val_6_nums;else return a.val > b.val;
}
int main()
{int n = 0;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i].val;}for(int i = 1; i <= n; i++){a[i].val_6_nums = jisuan(a[i].val);//先统计每个字符串的中6的个数 }sort(a + 1, a + 1 + n, cmp);//排序,贪心的体现 int ret = 0;int i = 1;int tm = 0;while(i <= n){if(a[i].val_6_nums >= 6) {ret++;i++;}else if(a[i].val_6_nums < 6){a[i + 1].val += a[i].val;//拼接字符串 a[i + 1].val_6_nums = jisuan(a[i + 1].val);//更新6的个数 if(tm == 3)break;tm++; }i++;}cout << ret;return 0;} 

当然还是那句话本段代码可能存在一些缺陷,所以代码和思路仅供参考,如果有新的思路或者代码上有新的缺陷,欢迎在评论区留言

题目 :最短距离

题目解析

 首先我们先来讲一下这个示例

示例解析

代码原理

这题的代码原理与三国游戏的原理比较类似,总之也是贪心

代码展示

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 50010;
int a[N], b[N];
int main()
{int n = 0;cin >> n;for(int i = 1; i <= n; i++) cin >> a[i];for(int i = 1; i <= n; i++) cin >> b[i];sort(a + 1, a + 1 + n);//排序,贪心的体现 sort(b + 1, b + 1 + n);int ret = 0;for(int i = 1; i <= n; i++){ret += abs(a[i] - b[i]);}cout << ret;return 0;} 

ok本篇文章的分享就到这里,至此蓝桥杯系列的文章完结,当然有需要的小伙伴可以留言,博主看到有小伙伴要求依旧会更新。

相关文章:

  • 每周靶点分享:Angptl3、IgE、ADAM9及文献分享:抗体的多样性和特异性以及结构的新见解
  • 基于大型语言模型的高效时间序列预测模型选择
  • 【网工第6版】第7章 网络操作系统与应用服务器③
  • Arm核的Ubuntu系统上安装Wireshark
  • 英语六级---2024.12 卷二 仔细阅读2
  • 第5章 深度学习和卷积神经网络
  • 如何将 Build at、Hash 和 Time git 的 Tag 号等构建信息,自动写入一个 JSON 文件
  • P4017 最大食物链计数
  • 可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse
  • 计算机网络-DNS协议, ICMP协议,DDoS攻击
  • Minor GC与Full GC分别在什么时候发生?
  • DeepSeek驱动的智能客服革命:语音交互与大模型的融合实践
  • keep the pipe Just full But no fuller - BBR 与尘封 40 年的求索
  • 复刻低成本机械臂 SO-ARM100 单关节控制(附代码)
  • 基于STM32、HAL库的CP2102-GMR USB转UART收发器 驱动程序设计
  • 分享 2 款基于 .NET 开源的实时应用监控系统
  • wails3学习-runtime:Window无边框设置
  • 【Spring Boot 多模块项目】@MapperScan失效、MapperScannerConfigurer 报错终极解决方案
  • window 显示驱动开发-处理内存段(二)
  • Linux系统下使用Kafka和Zookeeper
  • 欧盟公布关税反制清单,瞄准美国飞机、汽车等产品
  • 无人机穿越大理千年古塔落券洞内,涉事“飞手”被行拘10日
  • 马上评|让“贾宝玉是长子长孙”争议回归理性讨论
  • 水利部:山西、陕西等地旱情将持续
  • 【社论】以法治力量促进民企长远健康发展
  • 太原一高中生指出博物馆多件藏品标识不当,馆方已邀请他和专家共同探讨