长沙学院2023 第一次蓝桥训练题解
每道题都在洛谷上,每个题都有很详细的题解,可以先自行做,不会再看题解。
题目解析思路都写在代码中,中文题面就不单独解释题意了。
P2440 木材加工(二分答案)
链接:P2440 木材加工
解析 代码
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
typedef long long LL;
const int N = 1e5 + 10;
ll a[N], n, k;
bool check(int x){//判断我二分的这个数适合符合要求int sum = 0;for(int i = 1; i <=n; i ++){sum += a[i] / x;//整数除法自动向下取整}/* return sum >= k;等同于if(sum >= k) return true;//该长度符合要求我能切出k甚至更多的木材满足要求else return false;*/return sum >= k;
}
int main(){cin >> n >> k;for(int i = 1; i <= n; i ++) cin >> a[i];int l = 1, r = 1e8;//定义范围while(l <= r){int mid = (l + r) >> 1;//作用等同于 (l + r) / 2if(check(mid)) l = mid + 1;else r = mid - 1;}cout << r;return 0;
}
P3817 小A的糖果(贪心)
链接:P3817 小A的糖果
解析 代码
/*
核心思想 我所做的操作 对答案的影响怎么好怎么来
吃1号的糖果只能影响2号 如果吃2号的糖果 能影响到1号和3号
*/
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
const int N = 1e5 + 10;
ll a[N],n,x;
int main()
{ll ans = 0;cin >> n >> x >> a[1]; //先读入a[1]if(a[1] > x){//a1已经超过x,至少得将其减小至xans += a[1] - x;a[1] = x;}for(int i = 2; i <= n; i ++){cin >> a[i];if(a[i] + a[i - 1] > x){ans += a[i] + a[i - 1] - x;a[i] = x - a[i - 1];//每次保证ai小于x}}cout << ans;return 0;
}
P5638 【CSGRound2】光骓者的荣耀(前缀和)
链接:P5638 【CSGRound2】光骓者的荣耀
解析 代码
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
const int N = 1e6 + 10;
ll a[N];
int main()
{int n, k;cin >> n >> k;for(int i=1;i<=n - 1;i++) {cin >> a[i];a[i] += a[i - 1];//前缀和}ll ans = a[n-1];for(int i = 1; i + k - 1 <= n - 1; i ++){//我们肯定不会跳到超过n号城市 i + k - 1 <= n - 1ans = min(ans, a[n - 1] - (a[i + k - 1] - a[i - 1]));}cout << ans;return 0;
}
P1115 最大子段和(贪心)
链接:P1115 最大子段和
解析 代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 2e5 + 10;
int a[N];
int main()
{int n, sum = 0, ans = -1e4;//ans初始化为负数scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);ans = max(ans, a[i]);if(sum + a[i] <= 0) sum = 0;//sum已经是负贡献了就将这段丢弃else {sum += a[i];ans = max(ans,sum);//每次都比较一下}}printf("%d",ans);return 0;
}
标题P1090 [NOIP2004 提高组] 合并果子 (贪心)
P1090 [NOIP2004 提高组] 合并果子
解析 代码
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 10010;
priority_queue<int, vector<int>, greater<int>>q;//小顶堆
int main()
{int n, x;cin >> n;for(int i = 1; i <= n; i ++){cin >> x;q.push(x);//加入队列}int ans = 0;/*每次取最小的两个果子,可以使得小果子的贡献次数多 大果子的贡献少达到花费的最小的目的*///top:取得队首 pop:将队首弹出for(int i = 1; i < n; i ++){int x1 = q.top(); q.pop();int x2 = q.top(); q.pop();ans += x1 + x2;q.push(x1 + x2);}cout << ans;return 0;
}
P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles(动态规划)
链接:P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
解析 代码 (DP 版)
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int f[N][N];
int main()
{int n;cin >> n;for(int i = 1; i <= n; i ++){//输入数字三角形for(int j = 1; j <= i; j ++){//第i行恰好有i个数字cin >> f[i][j];}}for(int i = 2; i <= n; i ++){for(int j = 1; j <= i; j ++){f[i][j] += max(f[i - 1][j], f[i - 1][j - 1]);//只可能从两个方向来,1是上方,2是左上方 取最大值}}int ans = 0;for(int i = 1; i <= n; i ++){ans = max(ans, f[n][i]);//最终的最大值肯定是最底部的某个数}cout << ans;return 0;
}
解析 代码(记忆化搜索版)
/*
建议将dfs 深度优先搜索 学会再来看这篇题解
*/
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int n, f[N][N], vis[N][N];
int dfs(int row, int col)//当前处在数字三角形的第几行第几列
{/*关键部分!因为我们从这一个数字向下搜索,那么能找到最大价值的路径是确定,不会因为前面是从别的地方来导致从这里出发找到的价值有变化,这就是dp的关键(无后效性)所以我们找到一次,就把答案记录下来,下次就不用再搜了,直接使用*/if(vis[row][col]) return f[row][col];vis[row][col] = 1; //这里我们开始寻找,就标记,下次再到这里就不用找了if(row == n) return f[row][col]; //找到最后一层就到底不用继续搜了f[row][col] += max(dfs(row + 1, col), dfs(row + 1, col + 1));//也是只有两种走法 取最大值return f[row][col];
}
int main()
{cin >> n;//输入数字三角形for(int i = 1; i <= n; i ++){for(int j = 1; j <= i; j ++) cin >> f[i][j];//第i行恰好有i个数字}cout << dfs(1, 1);return 0;
}
相关文章:
长沙学院2023 第一次蓝桥训练题解
每道题都在洛谷上,每个题都有很详细的题解,可以先自行做,不会再看题解。 题目解析思路都写在代码中,中文题面就不单独解释题意了。 P2440 木材加工(二分答案) 链接:P2440 木材加工 解析 代码…...
云端Docker搭建ABY库以及本地CLion使用
文章目录ABY的搭建以及使用前言ABY库的下载、安装及测试CLion配置后续杂项项目改名使用其他的库最后ABY的搭建以及使用 前言 仅做记录,仅供参考,不同人有不同的使用方式命令手敲,可能有错,自己辨识勿问,我懂的也不多…...
ES6-箭头函数、解构赋值、对象简写
箭头函数特点 1、 (只有1个形参) 可以省略() 2、 {} 可以省略 只有一句代码 或 只有返回值的时候,省略return 3、arguments 不可用,arguments在没有形参的时候可以拿到调用函数拿在的实参 获取伪数组通过Array.from转为真数组。 4、 箭头函数没有this, …...
【CSS】CSS 背景设置 ② ( 背景位置 | 背景位置-方位值设置 )
文章目录一、背景位置1、语法说明2、注意事项二、背景位置-方位值设置1、效果展示2、完整代码示例一、背景位置 1、语法说明 如果 盒子的大小 大于 背景图片的大小 , 默认的 图片 位置是 左上角 ; 设置背景位置的 CSS 语法如下 : background-position : length length backgro…...
HTML 扫盲
✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录前言HTML 结构快速生成代码框架HTML 常见标签注释标签标题标签: h1-h6段落标签:p换行标签:br格式化标签…...
项目中用到的责任链模式
目录 1.什么是责任链?它的原理是什么? 2.应用场景 3.项目中的应用 传送门:策略模式,工作中你用上了吗? 1.什么是责任链?它的原理是什么? 将请求的发送和接收解耦,让多个接收对象…...
C++复习笔记--STL的string容器和vector容器
1--string容器string 本质上是一个类,其不同于指针 char*,string 类的内部封装了 char*,用于管理字符串,是一个 char* 型的容器;1-1--string构造函数string 的构造函数原型:string(); // 创建一个空的字符串…...
第一章 软件项目管理概述
项目(Project)是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。项目的特征PMBOK(A guide to the Project management Body Of Knowledge:项目管理知识体系指南)五大过程组和十大知识领域从时间角度出发,项目管理分为五大过程组:启动…...
【Linux系统编程】06:共享内存
共享内存 OVERVIEW共享内存一、文件上锁flock二、共享内存1.关联共享内存ftok2.获取共享内存shmget3.绑定共享内存shmat4.绑定分离shmdt5.控制共享内存shmctl三、亲缘进程间通信1.共享内存写入与读取2.共享内存解绑与删除3.共享内存综合四、非亲缘进程间通信1.通过sleep同步2.通…...
【专项】112. 路径总和
112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 …...
【数据结构】堆排序
堆是一种叫做完全二叉树的数据结构,可以分为大根堆,小根堆,而堆排序就是基于这种结构而产生的一种程序算法。大堆:每个节点的值都大于或者等于他的左右孩子节点的值小堆:每个结点的值都小于或等于其左孩子和右孩子结点…...
论文阅读笔记《GAMnet: Robust Feature Matching via Graph Adversarial-Matching Network》
核心思想 本文提出一种基于图对抗神经网络的图匹配算法(GAMnet),使用图神经网络作为生成器分别生成源图和目标图的节点的特征,并用一个多层感知机作为辨别器来区分两个特征是否来自同一个图,通过对抗训练的办法提高生成器特征提取…...
数据安全—数据完整性校验
1、数据安全保障三要素即 保密性 完整性、可用性机密性:要求数据不被他人轻易获取,需要进行数据加密。完整性:要求数据不被他人随意修改,需要进行签名技术可用性:要求服务不被他人恶意攻击,需要进行数据校验…...
Java 最小路径和
最小路径和中等给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid [[1,3,1],[1,5,1],[4,2,1]]输出&…...
Flask+VUE前后端分离的登入注册系统实现
首先Pycharm创建一个Flask项目: Flask连接数据库需要下载的包: pip install -U flask-cors pip install flask-sqlalchemy Flask 连接和操作Mysql数据库 - 王滚滚啊 - 博客园 (cnblogs.com) sqlAlchemy基本使用 - 简书 (jianshu.com) FlaskVue前后端分…...
【Go】用Go在命令行输出好看的表格
用Go在命令行输出好看的表格前言正文生成Table表头设置插入行表格标题自动标号单元格合并列合并行合并样式设置居中设置数字自动高亮标红完整Demo代码结语前言 最近在写一些运维小工具,比如批量进行ping包的工具,实现不困难,反正就是ping&am…...
怎么处理消息重发的问题?
消息队列在消息传递的过程中,如果出现传递失败的情况,发送方会重试,在重试的过程中,可能会产生重复的消息。 消息重复的情况必然存在 关于传递消息时能够提供的服务质量标准,MQTT协议给出了三种不同的标准࿱…...
JVM 运行时数据区(数据区组成表述,程序计数器,java虚拟机栈,本地方法栈)
JVM 运行时数据区JVM 运行时数据区3.1运行时的数据区组成概述3.1.1程度计数器3.1.2java虚拟机栈3.1.3本地方法栈3.1.4java堆3.1.5方法区3.2程序计数器3.3java虚拟机栈3.4本地方法栈JVM 运行时数据区 堆,方法区(元空间) 主要用来存放数据 是线程共享的. 程序计数器,本地方法栈…...
Oracle ASM磁盘组配置、日常运维、故障处理等操作资料汇总
ASM(自动存储管理)在数据库中是非常重要的组成部分,它可以为磁盘提供统一的存储管理、提高磁盘访问的性能和可用性、简化管理复杂度,从而为数据库的运行提供更好的支持。这里就为大家整理了墨天轮数据社区上一些ASM相关基础知识、…...
java对象的创建与内存分配机制
文章目录对象的创建与内存分配机制对象的创建类加载检查分配内存初始化零值设置对象头指向init方法其他:指针压缩对象内存分配对象在栈上分配对象在Eden区中分配大对象直接分配到老年代长期存活的对象进入老年代对象动态年龄判断老年代空间分配担保机制对象的内存回…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
