2022——蓝桥杯十三届2022国赛大学B组真题

在这里插入图片描述

问题分析

看到这个问题的同学很容易想到用十层循环暴力计算,反正是道填空题,一直算总能算得出来的,还有些同学可能觉得十层循环太恐怖了,写成回溯更简洁一点。像下面这样

#include <bits/stdc++.h>
using namespace std;
int cnt=0;
vector<bool> used(2023,false);
void dfs(int now,int len,int start) {if(len==10){if(now==2022){cnt++;}return;}for(int i=start;i<=2022-now;i++){if(!used[i]){used[i]=true;dfs(now+i,len+1,i+1);used[i]=false;}}
}
int main() {dfs(0,0,1);cout<<cnt<<endl;return 0;
}

但是我们分析一下,这个时间复杂度大概是 O ( C 2022 10 ) O(C_{2022}^{10}) O(C202210)级别的,这个数字太恐怖了,要高于 1 0 30 10^{30} 1030的数量级,而c++代码在平台上运行的速度大概是 1 0 9 10^{9} 109次每秒。所以,根本不可能暴力求出答案。而回溯不可以,我们可以动态规划嘛。这实际上就是典型的限量背包问题(如果不知道什么是限量背包问题,可以看我的这篇博客)。从物品(1~2022)中挑选10个物品,要求每种物品只能选一次,然后装满该背包(容量2022)有多少种组合?将该问题转化为背包问题就很容易解决了。(不过要记得用long long,这个数字很大)

具体代码如下

#include<iostream>
using namespace std;
long long int f[11][2023]= {0}; //f[j][k]:选择了j个物品满载容积k的背包的组合数 
int i, j, k;
int main() {f[0][0]=1;for(i=1; i<=2022; i++) {//遍历每个物品 for(k=2022; k>=i; k--) {//遍历背包容量,从后往前遍历 for(j=1; j<=10; j++) {//遍历每个选择数量 f[j][k]+=f[j-1][k-i];}}}cout << f[10][2022];return 0;
}

结果

在这里插入图片描述

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

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

相关文章

apk反编译修改教程系列-----反编译apk 去除软件强制更新的八种方式步骤解析【十七】

安卓有的apk 软件会不断更新。但有些用户需要旧版的有些功能或者新版功能增减原因等等。需要不更新继续使用。这类问题有的可以简单修改版本号来跳过更新。或者有的软件可以忽略。但对于某些无法跳过更新界面等等的apk。就需要深度反编译来去除软件的强制更新。 通过课程可以了…

wsl安装Xfce桌面并设置系统语言和输入法

一、安装xfce &#xff08;有相关的依赖都会安装&#xff09; sudo apt -y install xfce4 二、 安装远程连接组件 sudo apt install xrdp -y 并重新启动 Xrdp 服务&#xff1a; sudo systemctl restart xrdp 本地windows系统中请按 winR 键 呼出运行 在运行中输入 mstsc…

1067: 有向图的邻接表存储强连通判断

解法&#xff1a; 定理&#xff1a;有向图G是强连通图的充分必要条件是G中存在一条经过所有节点的回路 跟上道题一样 这是错误代码 #include<iostream> #include<vector> using namespace std; int arr[100][100]; void dfs(vector<bool>& a,int u) {a…

唤醒手腕 Go 语言 并发编程、Channel通道、Context 详细教程(更新中)

并发编程概述 ​ 一个进程可以包含多个线程&#xff0c;这些线程运行的一定是同一个程序&#xff08;进程程序&#xff09;&#xff0c;且都由当前进程中已经存在的线程通过系统调用的方式创建出来。进程是资源分配的基本单位&#xff0c;线程是调度运行的基本单位&#xff0c…

【JAVA进阶篇教学】第十二篇:Java中ReentrantReadWriteLock锁讲解

博主打算从0-1讲解下java进阶篇教学&#xff0c;今天教学第十二篇&#xff1a;Java中ReentrantReadWriteLock锁讲解。 在并发编程中&#xff0c;读写锁&#xff08;ReadWriteLock&#xff09;是一种用于管理对共享资源的访问的锁机制&#xff0c;它提供了比传统的互斥锁更高的…

BUG-ModuleNotFoundError: No module named ‘torchvision.models.utils‘

本专栏为深度学习的一些技巧,方法和实验测试,偏向于实际应用,后续不断更新,感兴趣童鞋可关,方便后续推送 现象 在转onnx模型时&#xff0c;保错如下: from torchvision.models.utils import load_state_dict_from_url ModuleNotFoundError: No module named torchvision.mod…

栈的讲解

栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底&#xff08;因为先进后出&#xff09;。栈中的数据元素遵守后进先出LIFO&#xff08;Last In Firs…

数据结构与算法===回溯法

文章目录 原理使用场景括号生成代码 小结 原理 回溯法是采用试错的思想&#xff0c;它尝试分步骤的去解决一个问题。在分步骤解决问题的过程中&#xff0c;当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候&#xff0c;它将取消上一步甚至是上几步的计算&#x…

函数模板底层本质

#include<iostream> using namespace std;template<typename T1> T1 ave(T1 a, T1 b) { return a b; }int main() {ave(100, 200);ave(short(100), short(200));return 0; }反汇编代码 模板本质是编译器帮忙生成了不同的函数 就算非类型参数值不一样编译器也重新…

HCIP(BGP综合实验)--8

一&#xff1a;实验要求 二&#xff1a;实现过程 &#xff08;一&#xff09;配置IP地址&#xff1a; AR1: [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 [AR1-GigabitEthernet0/0/0]int l0 [AR1-LoopBack0]ip add 172.16.0.1 32 [AR1-LoopBack0]int l1 […

2024OD机试卷-按身高和体重排队 (java\python\c++)

题目:按身高和体重排队 题目描述 某学校举行 运动会 ,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的 编号顺序关系。请输出排列后的学生编号。 输入描述 两个序列,每个序列由…

TM1650 并联在I2C 信号线的处理方法

目的是可以并联多个TM1650 在标准I2C 总线上&#xff0c;并且不影响其他标准I2C 器件。思路就是拿个额外的开关控制每一片TM1650 的使能&#xff0c;就像SPI 的CS 信号那样。 协议 TM1650 的通信协议虽说不是标准I2C&#xff0c;但也算是比较兼容的&#xff0c;比方说&#x…

springboot实现Aop

一、原理 AOP&#xff08;Aspect Oriented Programming&#xff09;的意思是&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可对业务逻辑进行增强&#xff0c;在不改变原有逻辑的基础上&#xff0c;在其前后进…

JVM调优:JVM常用调优命令和参数

JVM调优是调整和配置Java虚拟机&#xff08;JVM&#xff09;的过程&#xff0c;以便最大限度地提高应用程序的性能和效率。这涉及到调整内存设置、选择合适的垃圾收集器&#xff0c;以及配置各种性能参数。 今天我们来了解一下参数如何设置 JVM调优的重要性 1.通过调整JVM参数…

YOLOv8独家原创改进: AKConv(可改变核卷积)

1.AKConv原理介绍 地址:2311.11587 (arxiv.org) 摘要:基于卷积运算的神经网络在深度学习领域取得了令人瞩目的成果,但标准卷积运算存在两个固有的缺陷。一方面,卷积运算仅限于局部窗口,无法捕获其他位置的信息, 并且它的采样形状是固定的。 另一方面,卷积核的大小固定为…

合肥知识付费系统解决方案,培训机构试听课不理想要怎么转化成学员?

现在到处都是培训机构&#xff0c;机构之间的竞争也是越发激烈的&#xff0c;很多机构为了获得生源&#xff0c;都会利用试听课来让家长或孩子&#xff0c;感受机构教学以及服务&#xff0c;那培训机构试听课不理想要怎么转化学员&#xff1f; 因为机构的试听课课程并不是同一种…

基于yolov8+gradio目标检测演示系统设计

YOLOv8与Gradio&#xff1a;开启目标检测的可视化新篇章 随着人工智能技术的飞速发展&#xff0c;目标检测作为计算机视觉领域的重要分支&#xff0c;已经广泛应用于安防监控、自动驾驶、医疗影像等多个领域。而YOLO&#xff08;You Only Look Once&#xff09;系列算法作为目…

光线追踪的渲染流程

光线追踪是一种基于物理的渲染技术&#xff0c;它模拟了光线在场景中的传播和相互作用过程。以下是光线追踪的基本渲染流程&#xff1a; 场景描述&#xff1a; 首先&#xff0c;需要描述场景&#xff0c;包括物体的几何形状、材质、光源等信息。每个物体通常由其几何形状&#…

23种设计模式学习导航

23种设计模式在Java中是一种重要的软件开发原则&#xff0c;旨在提高代码的可维护性、可扩展性和重用性。这些设计模式分为创建型模式、结构型模式和行为型模式三类。以下是这23种设计模式的Java完整版学习导航&#xff1a; 一、创建型模式&#xff08;5种&#xff09; 单例模…

Maven多环境与SpringBoot多环境配置

1. Maven多环境配置与应用 1.1 多环境开发 我们平常都是在自己的开发环境进行开发&#xff0c; 当开发完成后&#xff0c;需要把开发的功能部署到测试环境供测试人员进行测试使用&#xff0c; 等测试人员测试通过后&#xff0c;我们会将项目部署到生成环境上线使用。 这个时…