十二届蓝桥杯省赛c++(下)
1、

拿到题目一定要读懂题意,不要看到这题目就上来模拟什么闰年,一月的天数啥的。这个题目问你当天的时间,就说明年月日跟你都没关系,直接无视就好了。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>using namespace std;#define ll long long//能开long long就开,避免爆数据 int main()
{ll n;cin >> n;n /= 1000;//先把毫秒转化为秒 ll hour = (n / 60 / 60) % 24;//求出小时数,一定要记得取模 ll minute = (n % 3600 / 60) % 60;//分钟数 ll s = n % 3600 % 60;//秒数 if (hour < 10) cout << 0;//记得处理好零的输出 cout << hour << ':';if (minute < 10) cout << 0;cout << minute << ':';if (s < 10) cout << 0;cout << s;return 0;
}
2、

(1)动态规划:
闫氏dp分析法:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>using namespace std;#define N 1010000int f[150][N] ,n ,w[N] ,ans ,sum; int main()
{cin >> n;for (int i = 1 ;i <= n ;i ++) cin >> w[i] ,sum += w[i];//拿sum存储砝码的重量之和 f[0][0] = 1;//初始化,零个砝码测出质量为0的方案有一个 for (int i = 1 ;i <= n ;i ++){for (int j = 0 ;j <= sum ;j ++){f[i][j] = f[i - 1][j];//第i个砝码没有用 f[i][j] += f[i - 1][abs(j - w[i])];//第i个砝码放左边 f[i][j] += f[i - 1][j + w[i]];//第i个砝码放右边 }}for (int i = 1 ;i <= sum ;i ++)if (f[n][i]) ans ++;//如果有值,说明前n个砝码可以测出来重量为i的物品,答案加一 cout << ans;return 0;
}
(2)dfs暴力,拿一半分
如果这道题实在没时间做或者说想不到思路,那么我们就可以考虑暴力拿分
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>using namespace std;#define N 1010000int n ,w[N] ,ans;
bool vis[N];void dfs(int k ,int g)
{if (k > n){if (g > 0 && !vis[g]){ans ++;vis[g] = true;}return;}dfs(k + 1 ,g);dfs(k + 1 ,g + w[k]);dfs(k + 1 ,abs(g - w[k]));
}int main()
{cin >> n;for (int i = 1 ;i <= n ;i ++){cin >> w[i];}dfs(0 ,0);cout << ans; return 0;
}
3、

这一届的题目从这一题开始往后,难度就起来了。
1、先说暴力做法吧,可以拿四十分,直接预处理一千行
#include<iostream>
#include<algorithm>
#include<cstring>using namespace std;const int N = 1e3 + 10;int n = 1000;
int a[N][N];int main() {a[1][1] = 1;for (int i = 2; i <= n; i ++) // 预处理for (int j = 1; j <= i; j ++)a[i][j] = a[i - 1][j] + a[i - 1][j - 1];int x; cin >> x;int cnt = 0;for (int i = 1; i <= n; i ++) // 枚举for (int j = 1; j <= i; j ++) {cnt ++;if (a[i][j] == x) {cout << cnt;return 0;}} return 0;
}
2、正解
关于这道题我们需要明白:杨辉三角其实就是组合数!如图:

从图中我们可以观察出两个性质:
1、以中间的紫色分割线为界,左右两边的数值是相等的。那么右边存在的某一个值左边一定也存在,并且根据题目的排序方式来看左边相对而言更加靠前,也就是说某一个数N第一次一定是在左边先出现。因此,我们要找的结果一定是在左边部分中。
2、中间一列数从上往下是在递增的,每一横排从左往右也在递增,每一斜行从上往下也在递增。所以每个斜行都保持了单调性。
现在知道了这两个性质,我们可以想想怎么从左边中找到N。直接枚举的复杂度太高,不可取,而根据第二条中所提到的单调性,我们可以很自然的想到二分法。那么该如何二分?竖着?横着?这都不可取,因为不论是哪一种我们都无从下手。所以我们需要斜着来!每一个斜行从紫色部分开始,也就是C(k,2*k)的形式,到C(k ,n)结束(为什么从n结束?可以思考一下,倘若想不明白可以私信问我)。由于n最大1e9,C(34, 17) > 1e9, C(32, 16) < 1e9,因此只要枚举前16个斜行即可。
C(k, r)对应的顺序值为:(r + 1) * r / 2 + k + 1
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>using namespace std;#define ll long longll n;ll c(int a ,int b)
{ll res = 1;for (int i = a ,j = 1 ;j <= b ;i -- ,j ++)//求组合数的过程 {res = res * i / j;if (res > n) return res;//如果res已经大于n就不用在求了,肯定不是答案,直接返回。这样也可以避免爆数据 }return res;
}bool h(int k)
{int l = 2 * k ,r = n;while (l < r){ll mid = (l + r) / 2;if (c(mid ,k) >= n) r = mid;elsel = mid + 1;}if (c(l ,k) != n) return false;cout << 1ll * (l + 1) * l / 2 + k + 1;//如果找到了,输出位置 return true;
}int main()
{cin >> n;for (int i = 16 ; ;i --)//枚举前十六个斜行 if (h(i)) break;return 0;
}
4、

我也不会。。。
5、
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>using namespace std;#define ll long long
#define N 5500const int mod = 1000000007;ll f[N][N] ,len;
char s[N];ll hu()
{memset(f ,0 ,sizeof(f));f[0][0] = 1;for (int i = 1 ;i <= len ;i ++){if (s[i] == '('){for (int j = 1 ;j <= len ;j ++)f[i][j] = f[i - 1][j - 1];}else {f[i][0] = (f[i - 1][0] + f[i - 1][1]) % mod;for (int j = 1 ;j <= len ;j ++)f[i][j] = (f[i - 1][j + 1] + f[i][j - 1]) % mod;}}for (int i = 0 ;i <= len ;i ++)if (f[len][i]) return f[len][i];return -1;}int main()
{scanf("%s" ,s + 1);len = strlen(s + 1);ll l = hu();reverse(s + 1 ,s + len + 1);for (int i = 1 ;i <= len ; i ++){if (s[i] == '(') s[i] = ')';elses[i] = '(';}ll r = hu();printf("%lld" ,l * r % mod);return 0;
}
相关文章:
十二届蓝桥杯省赛c++(下)
1、 拿到题目一定要读懂题意,不要看到这题目就上来模拟什么闰年,一月的天数啥的。这个题目问你当天的时间,就说明年月日跟你都没关系,直接无视就好了。 #include <iostream> #include <cstring> #include <algori…...
数据结构与算法——堆的基本存储
目录 一、概念及其介绍 二、适用说明 三、结构图示 四、Java 实例代码 五.堆和栈的区别 一、概念及其介绍 堆(Heap)是计算机科学中一类特殊的数据结构的统称。 堆通常是一个可以被看做一棵完全二叉树的数组对象。 堆满足下列性质: 堆中某个节点的值总是不大…...
来了来了 !!!K8s指令、yaml部署
文章目录k8s资源清单一、k8s资源指令1、基础操作2、命令手册二、资源清单1、required2、optional3、other4、资源清单格式5、常用命令三、部署实例1、nginx3、eureka部署k8s资源清单 一、k8s资源指令 1、基础操作 #创建且运行一个pod #deployment、rs、pod被自动创建 kubect…...
spring-cloud-feign实战笔记
feign 配置 针对单个feign接口进行配置feign:client:config:# feignName 注意这里与contextId一致,不能写成name(FeignClientFactoryBean#configureFeign)# 不能写成 client-b (微服务名称),否则不生效helloFeignClient: # conte…...
【Pytorch】利用PyTorch实现图像识别
本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 这是目录使用torchvision库的datasets类加载常用的数据集或自定义数据集使用torchvision库进行数据增强和变换,自定义自己的图像分类数据集并使用torchvision库加载它们使…...
在家查找下载最新《柳叶刀》The Lancet期刊文献的方法
《柳叶刀》The Lancet简介: 《柳叶刀》The Lancet是全球顶尖综合性医学期刊,每周都会发表来自世界各地顶尖科学家的研究精粹。是由托马斯威克利(Thomas Wakley)创办于1823年,由爱思唯尔(Elsevierÿ…...
当下的网络安全行业前景到底怎么样?还能否入行?
前言网络安全现在是朝阳行业,缺口是很大。不过网络安全行业就是需要技术很多的人达不到企业要求才导致人才缺口大常听到很多人不知道学习网络安全能做什么,发展前景好吗?今天我就在这里给大家介绍一下。网络安全作为目前比较火的朝阳行业&…...
SpringCloud:SpringAMQP介绍
Spring AMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。Spring AMQP官方地址 Spring AMQP提供了三个功能: 自动声明队列、交换机及其绑定关系基于注解的监听器模式,异步接收消息封…...
第十三届蓝桥杯省赛 python B组复盘
文章目录前言主要内容🦞试题 A:排列字母思路代码🦞试题 B:寻找整数思路代码🦞试题 C:纸张尺寸思路代码🦞试题 D:数位排序思路代码🦞试题 E:蜂巢思路代码&…...
SQL注入之HTTP请求头注入
Ps: 先做实验,在有操作的基础上理解原理会更清晰更深入。 一、实验 sqli-lab 1. User-Agent注入 特点:登陆后返回用户的 User-Agent --> 服务器端可能记录用户User-Agent 输入不合法数据报错 payload: and updatexml(1,concat("~&…...
Metasploit详细教程
第一步:安装和启动Metasploit 您可以从Metasploit官方网站下载适用于您操作系统的Metasploit框架。安装Metasploit框架后,您可以使用以下命令来启动Metasploit: msfconsole该命令将启动Metasploit控制台。 第二步:查找目标设备…...
【ChatGPT】Notion AI 从注册到体验:如何免费使用
欢迎关注【youcans的GPT学习笔记】原创作品,火热更新中 【ChatGPT】Notion AI 从注册到体验1. Notion AI 介绍1.1 Notion AI 简介1.2 Notion AI 的核心能力1.3 Notion AI 与 ChatGPT 的比较2. Notion AI 国内用户注册2.1 PC 端用户注册2.2 移动端用户注册3. Notion …...
每个开发人员都需要掌握的10 个基本 SQL 命令
SQL 是一种非常常见但功能强大的工具,它可以帮助从任何数据库中提取、转换和加载数据。数据查询的本质在于SQL。随着公司和组织发现自己处理的数据量迅速增加,开发人员越来越需要有效地使用数据库来处理这些数据。所以想要暗恋数据领域,SQL是…...
Vue项目预渲染
前言 Ajax 技术的出现,让我们的 Web 应用能够在不刷新的状态下显示不同页面的内容,这就是单页应用。在一个单页应用中,往往只有一个 html 文件,然后根据访问的 url 来匹配对应的路由脚本,动态地渲染页面内容。单页应用…...
可别再用BeanUtils了(性能拉胯),试试这款转换神器
老铁们是不是经常为写一些实体转换的原始代码感到头疼,尤其是实体字段特别多的时候。有的人会说,我直接使用get/set方法。没错,get/set方法的确可以解决,而且也是性能较高的处理方法,但是大家有没有想过,要…...
Transformer 杂记
Transformer输入的是token,来自语言序列的启发。卷积神经网络(CNN)是如何进行物种分类的.它实际是直接对特征进行识别,也就是卷积神经网络最基本的作用:提取图像的特征。例如:卷积神经网络判断一只狗的时候,…...
实现异步的8种方式
前言异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:「发送短信、邮件、异步更新等」,这些都是典型的可以通…...
Github隐藏功能显示自己的README,个人化你的Github主页
Github隐藏功能:显示自己的README 你可能还不知道,GitHub 悄悄上线了一个全新的个人页功能,显示一个自定义的 README.MD 在个人首页。要激活此功能,需要新建一个与自己 ID 同名的 Repository,新 Repo 里的README.MD将…...
单片机 | 51单片机原理
【金善愚】 单片机应用原理篇 笔记整理 课程视频 :https://space.bilibili.com/483942191/channel/collectiondetail?sid51090 文章目录一、引脚分布介绍1.分类2.电源引脚3.时钟引脚(2根)4.控制引脚(4根)5.端口引脚(32根)二、存储器结构及空间分布介绍1.存储器的划…...
(只需五步)注册谷歌账号详细步骤,解决“此电话号码无法验证”问题
目录 第一步:打开google浏览器 第二步:设置语言为英语(美国) 第三步:点击重新启动,重启浏览器 第四步:开始注册 第五步,成功登录google账号! 如果出现这样的原因&…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
