2023第十四届蓝桥杯C++B组菜鸡的落幕

news2025/4/27 18:13:39

时隔几天,终于还是忍不住来复盘一下蓝桥杯了,还记得去年参加做下填空,再做对个把编程,后面不会的大题打打表混混分,最后就能混个省奖,
这回估计凉透了,填空没对似乎,编程也没对几个,混分也没来得及混甚至题目都没来的及看,这次只能说复盘一下做了的几个题目,可能是错误的,希望有大佬能指出来纠正一下思路;

1、试题A:日期统计

在这里插入图片描述
解题思路与代码
暴力枚举的,我咋是365咧?上山打老虎大佬说是235

#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
using namespace std;
/*
5 6 8 6 9 1 6 1 2 4 
9 1 9 8 2 3 6 4 7 7 
5 9 5 0 3 8 7 5 8 1 
5 8 6 1 8 3 0 3 7 9 
2 7 0 5 8 8 5 7 0 9 
9 1 9 4 4 6 8 6 3 3 
8 5 1 6 3 4 6 7 0 7 
8 2 7 6 8 9 5 6 5 6 
1 4 0 1 0 0 9 4 8 0 
9 1 2 8 5 0 2 5 3 3

5 6 8 6 9 1 6 1 4 
9 1 9 8 2 3 6 4 7 7 
5 9 5 0 3 8 7 5 8 1 
5 8 6 1 8 3 0 3 7 9 
2 7 0 5 8 8 5 7 9 
9 1 9 4 4 6 8 6 3 3 
8 5 1 6 3 4 6 7 0 7 
8 2 7 6 8 9 5 6 5 6 
1 4 0 1 0 0 9 4 8 0 
9 1 2 8 5 0 5 3
*/
string mm[]={"01","02","03","04","05","06","07","08","09","10","11","12"};
string dd[]={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
int months[]={31,28,31,30,31,30,31,31,30,31,30,31};
int a[96];//2023固定找出来不要了,少写代码省事儿; 

bool isExist(string str){
	bool pos[96];//记录访问过的位置	,如果这个数字被取过就标记它不能再取了 
	for(int i = 0; i < 96; i++) pos[i] = true;
	int flag = 0;
	for(int j = 0; j < 4; j++){
		int c = str[j]-'0';
		for(int i = 0; i < 96; i++){
			if(( c == a[i]) && (pos[i] == true)) {
				flag++;
				pos[i] = false;
				break;
			}
		}
	}
	return flag == 4;
}

int main(){
	long long ans = 0;
	for(int i = 0; i < 96; i++) cin>>a[i];
	for(int i = 0; i < 12; i++){
		for(int j = 0; j < months[i]; j++){
			string tmp = mm[i] + dd[j];
			if(isExist(tmp)) ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

2、试题B:01串的熵

在这里插入图片描述
解题思路与代码
长度为23333333的01字符串,
log2( 0的出现次数 / 总长度 ) * 一个相应的值 的总数和
log2( 1的出现次数 / 总长度 ) * 一个相应的值 的总数和
两者相加为信息熵的值;由于0出现的次数比1少,所以直接二分找0出现次数的边界值就行;
结果为 11027421

#include<bits/stdc++.h>
using namespace std;
#define ll long long

double p(ll x,ll y){ //x 0 y 1
	double P0 = 1.0*x/(x+y);
	double P1 = 1.0*y/(x+y);
	return -1.0*x*x/(x+y)*log2(P0)-1.0*y*y/(x+y)*log2(P1);
};

int main(){
	ll n = 23333333;
	ll l=1, r=(n-1)/2;
	double PP = 11625907.5798;
	while(l<r){
		int mid = (l+r)>>1;
		double t = p(mid, n-mid);
		if(t<PP) l=mid+1;
		else r=mid;
	}
	cout << l << endl;
	return 0;
}

在这里插入图片描述

3、试题C:冶炼金属

在这里插入图片描述
解题思路与代码
A / V = B
求V的最大值和最小值
V 最小时 V = A / (B + 1) 代入多列数据求最大值
V 最大时 V = A / B 代入多列数据求最小值

#include <bits/stdc++.h>
using namespace std;

int main(){
	int n; cin>>n;
	int a[n][2];
	for(int i = 0; i < n; i++){
		cin>>a[i][0]>>a[i][1];
	}
	int maxv = 1e7, minv = 0, tmp = 0;
	for(int i = 0; i < n; i++){
		tmp = a[i][0] / a[i][1];
		maxv = min(maxv, tmp);
		tmp = a[i][0] / (a[i][1] + 1);
		minv = max(minv, tmp);	
	}
	cout<< minv + 1 << " " << maxv <<endl;
	return 0;
}

在这里插入图片描述

4、试题D:飞机降落

在这里插入图片描述
在这里插入图片描述
解题思路与代码

贪心算法之区间调度问题 : https://zhuanlan.zhihu.com/p/91254104

看到这个区间问题,第一时间想起的是贪心,然后纠结了这个区间尾很久(因为有个该死的盘旋时间啦,CPU干烧了),最终还是用的T+D的时间作为排序依据,所幸样例能过,不知是否正确,尽力了;该死的题目纠结了好久好久浪费了太多时间

#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
using namespace std;

typedef struct airplane{
	int t;//到达的时间 
	int d;//盘旋的时间 
	int l;//降落的时间 
}ap;

int main(){
	int t; cin>>t;//t,测试的组数	
	while(t--){//计算t组次 
		int n; cin>>n;//n组数据 
		if(n == 1) return true;
		ap a[n];
		for(int i = 0; i < n; i++){
			cin>>a[i].t>>a[i].d>>a[i].l;//获取这组数据 
		}
		sort(a, a+n, [](ap m, ap n){
			return m.t+m.d < n.t+n.d;//谁最不能持久,谁就先降 
		});
//		for(int i = 0; i < n; i++)	cout<<a[i].t<<" "<<a[i].d<<" "<<a[i].l<<endl;//调试数据 
		bool ans = true;
		int ap_end = a[0].t + a[0].l;//第一架飞机停好的时间 
	    for (int i = 1; i < n; i++) {
	    	int ap_start = a[i].t + a[i].d;//下一架飞机最晚开始的时间 
	        if (ap_end > ap_start) {
	            ans = false;
	            break;
	        }
	        if(a[i].t > ap_end){//要么上架飞机停好了我到了开始停,要么就是我盘旋到了ap_end上一架飞机停好了开始停; 
	        	ap_end = a[i].t + a[i].l;
			} else ap_end += a[i].l;
	    }
		if(ans) cout<<"YES"<<endl;
	    else cout<<"NO"<<endl;
	}
	
	return 0;
}

在这里插入图片描述

5、试题E:接龙数列

在这里插入图片描述
在这里插入图片描述
解题思路与代码

6、试题H:整数删除

在这里插入图片描述
在这里插入图片描述
解题思路与代码
这个题可能是最轻松的一个题,只考了stl的使用,当发现我没时间做后面的题以后,浏览了一下,挑了它先做了;

用一个multimap存位置关系,并且可以把元素从小到大排序,按顺序取最小值和最小值的位置,并将该位置的左右两边的非0的值加上最小值,然后把该位置置0,表示该元素被删除了,最后遍历输出时不要输出0就行;

#include <bits/stdc++.h>
using namespace std;

int main(){
	int n, k; cin>>n>>k;
	multimap<int, int> mp;	  // 记录位置关系 key值, value 位置,同时自动根据key值排序就能知道最小值 
	vector<int> pos(n + 1, 0);// 记录元素左右两边的值 
	for(int i = 1; i <= n; i++){
		cin>>pos[i];
		mp.insert(pair<int, int>(pos[i], i));
	} 
	auto it = mp.begin();
	for(int i = 1; i <= k; i++){
		int e = it->second, eleft = it->second - 1, eright = it->second + 1;
		while(pos[eleft] == 0)	eleft--;
		if(eleft >= 1)	pos[eleft]  += pos[e];
		while(pos[eright] == 0) eright++;
		if(eright <= n) pos[eright] += pos[e];
		pos[e] = 0;
		it++;
	}
	for(int i = 1; i <= n; i++){
		if(pos[i] != 0) cout<< pos[i] << " ";
	} 
	return 0;
}

在这里插入图片描述

后记

后面又挑了相对简单的一题做还没做完就结束了,到这里就结束了,菜鸡的落幕,感慨很多,不必要的地方浪费了很多时间导致后面的题目都没来的做,这里复盘的时候,基本上思路都是比赛的思路,但是代码又是重新敲的,发现整数删除哪里每次如果直接删除的话所有的元素都要位移很麻烦,所以采用了置0的方法;日期统计竞赛也是那么做的但是肯定错了,还不知道怎么错了,求指点;飞机降落不知正误,也是尽力了;光荣捐躯300元,真它喵的谢谢你啊;这把多半寄了,See You Again

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kettle8.2.0连接Hive3.1.2(踩坑,亲测有效)

这是目前遇到的最简单但最头疼的安装&#xff0c;因为是在公司之前用过的服务器上进行安装测试&#xff0c;加上又使用比较新的版本&#xff0c;结果踩了不少坑。Kettle连接Hive这个坑&#xff0c;从2023年4月11日下午开始&#xff0c;一致到2023年4月12日中午才弄好&#xff0…

uni-app常用配置

保存自动格式化 工具》设置》编辑器设置》保存时自动格式化 JS语法检查 安装eslint-js插件eslint-js - DCloud 插件市场 用于校验js和html中的js代码https://ext.dcloud.net.cn/plugin?id2037工具》设置》插件配置》eslint-js 启用实时校检 Vue语法检查 安装eslint-vue插…

【星界探索——通信卫星】铱星:从“星光坠落”到“涅槃重生”,万字长文分析铱星卫星系统市场

【星界探索——通信卫星】铱星&#xff1a;从“星光坠落”到“涅槃重生”一、铱星简介二、铱星系统设计思路2.1 工作原理2.2 铱星布局三、铱星优势四、发展历程五、第一代铱星公司的破产原因分析5.1 终端和资费价格高昂&#xff0c;市场用户群体小5.2 财务危机5.3 市场分析不足…

一文吃透低代码平台源代码交付的重要性(避坑指南)

一、前言 作为这两年IT界的风口&#xff0c;低代码在众人眼里已经不是什么陌生的概念。 对标于传统的纯代码开发&#xff0c;低代码是一种快速开发软件&#xff08;应用程序&#xff09;的方法&#xff0c;平台通过对大量功能与场景做提前封装&#xff0c;使得用户可以在可视…

MySQL开发05-MySQL开发规范

文章目录1、命名规范2、表设计规范3、索引规范4、SQL语句规范5、SQL脚本规范6、数据架构规范7、配置文件建议8、其他规范9、总结1、命名规范 命名应有意义&#xff0c;包括库名、表名、用户名等&#xff0c;以使用方便记忆、描述性强的可读性名称为第一准则&#xff0c;尽量避…

Docker网络案例

bridge 是什么 Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机…

C#基础复习

语句 目录 语句 switch&#xff1a; 跳转语句 标签语句 标签&#xff1a; 标签语句的作用域 goto语句 using 语句 资源的包装使用 using 语句示例&#xff1a; 多个资源和嵌套 语句是描述某个类型或让程序执行某个动作的源代码指令 块在语法上算作一个单条嵌入语句。任何语…

【cmake学习】搭建一个简单的cmake工程(初级版)

目录 1、工程框架介绍 2、编写CMakeLists.txt (1) 限制cmake最低版本、工程命名 (2) 引入头文件目录 (3) 引入库目录&#xff08;可选&#xff09; (4) 引入源文件 (5) 生成可执行文件 / 生成动静态库 (6) 链接库文件&#xff08;可选&#xff09; 3、完整CMakeLists…

uefi 内存管理

PEI 阶段 PEI 阶段最为重要的结构是HOB, 初始化内存服务前&#xff0c;PEI 申请的内存其实是插入到FV 文件 也就是FLASH 里面去运行。 在此状态下&#xff0c;FLASH 可读不可写&#xff0c;所以是不能使用全局变量的。如果有需要模块间共享信息&#xff0c;需要申请HOB. HO…

gtkmm给组件添加css

设置方式 使用CSS分为两步&#xff0c;1:为组件设这css名称&#xff0c;2:加载样式表。 样式表我们写在文件中就行&#xff08;似乎也可以从字符串加载&#xff0c;不过不推荐&#xff09;。 1. 设置css名称 使用gtk的接口&#xff1a;gtk_widget_class_set_css_name()。 这…

rk3568点亮E-ink

rk3568 Android11/12 适配 E-ink “EINK”是英语ElectronicInk的缩写。翻译成中文为“电子墨水”。电子墨水由数百万个微胶囊(Microcapsules)所构成&#xff0c;微胶囊的大小约等同于人类头发的直径。每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子&#…

Ubuntu 交叉编译Windows 版本的ffmpeg最佳实践

之前介绍在Windows上采用msys2+minGW或者cygwin在Windows编译方法。很多读者觉得在Windows搭建一个类Linux比较麻烦或者说方法不够通用,本文就介绍在流行的Linux发行版Ubuntu上编译window版本的ffmpeg。即介绍一种通用办法来编译Windows版本ffmpeg,该方法可以推广到android,…

算法 贪心4 || 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

860.柠檬水找零 很简单的一题&#xff0c;完全是常识题 class Solution { public:bool lemonadeChange(vector<int>& bills) {unordered_map<int,int> map;for(int i 0; i < bills.size(); i){map[bills[i]];if(bills[i] ! 5){if(map[5] 0) return fals…

【Linux】程序中获取和设置cpu和mem相关信息

这里是目录一、CPU和MEM信息1.1、CPU信息1.1.1、CPU核心数1.1.2、CPU频率读取和调整1.1.3、CPU温度1.2、MEM信息二、C程序读取CPU和MEM信息三、测试写在前面&#xff1a; 记录一下日常&#xff0c;之前有做过相关工作&#xff0c;但是没有记录下来&#xff0c;因此写一写文章。…

使用hbuilder连接夜神模拟器调试app

1. Hbuilder设置 这里端口号随便用一个没有被占用的&#xff1b; 路径夜神模拟器的安装路径下的nox_adb.exe的路径。 2. 夜神模拟器设置 设置如下&#xff1a; 工具&#xff0c;设置&#xff0c;关于平板电脑&#xff08;这里应该没有开发者模式选项&#xff0c;这是我配好之…

【LeetCode】剑指 Offer 53. 在排序数组中查找数字 p263 -- Java Version

1. 题目介绍&#xff08;53. 在排序数组中查找数字&#xff09; 面试题53&#xff1a;在排序数组中查找数字 一共分为三小题&#xff1a; 题目一&#xff1a;数字在排序数组中出现的次数题目二&#xff1a;0 ~ n-1 中缺失的数字题目三&#xff1a;数组中数值和下标相等的元素 2…

【创作赢红包】面向对象基础概念

什么是面向对象 面向对象&#xff08;Object Oriented&#xff09;是软件开发方法&#xff0c;一种编程范式&#xff0c;它是一种对现实世界理解和抽象的方法&#xff0c;是计算机编程技术发展到一定阶段后的产物。 早期的计算机编程是基于面向过程的方法&#xff0c;如实现算…

前端工程化:环境准备—NodeJs安装-Vue项目开发流程

一、前端工程化-Yapi 介绍&#xff1a;YApi 是高效、易用、功能强大的 api 管理平台&#xff0c;旨在为开发、产品、测试人员提供更优雅的接口管理服务 地址&#xff1a; http://yapi.smart-xwork.cn/ 具体操作步骤&#xff1a; 1、添加项目 2、添加接口&#xff1a;根据ID查…

技术分享 | observer 资源水位介绍

作者&#xff1a;郭斌斌 爱可生 DBA 团队成员&#xff0c;负责项目日常问题处理及公司平台问题排查。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 OceanBase 集群界面会展示 Observer …

MATLAB绘制柱状/饼图填充图

MATLAB绘制柱状填充图方法1&#xff1a;hatchfill2工具1.1 案例1&#xff1a;柱状图填充1.2 案例2&#xff1a;饼图填充方法2&#xff1a;applyhatch函数2.1 案例1&#xff1a;柱状图填充2.2 案例2&#xff1a;饼图填充方法3&#xff1a; applyhatch_plusC函数3.1 案例1&#x…