The 2023 Guangdong Provincial Collegiate Programming Contest

I. Path Planning

嗯,怎么说呢,一般二维图,数据不是很大的比如n*m*log级别允许的,如果一眼不是bfs,可以考虑结合一下二分

本题可知,只能向下或者向右,那么我们就像如果答案为x,那么一定会有一条0到x-1的路存在,

我们再想一条路肯定是先右再下,然后重复进行的,类似于一个楼梯的样子。

二分我们知道了,但是check里面如何判断才能配合二分呢,对于我们check的mid ,我们可以先按行排序再按列排序,然后按这个先行后列的顺序按我们的原图找0~mid-1的数,然后只看列是否满足即可,也就是上一个的列值小于等与目前的列值。

int n, m;
int a[N];
bool check(int mid)
{int last = -1;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (a[(i - 1) * m + j] <= mid - 1){if (j < last)return false;last = j;}}}return 1;
}
void solve()
{cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> a[(i - 1) * m + j];}}int l = 0, r = n * m;while (l < r){int mid = l + r + 1 >> 1;if (check(mid))l = mid;elser = mid - 1;}cout << r << endl;
}

B. Base Station Construction

题意:就是跟你一堆区间,每个区间里面必选选一个点,问最小花费。

我们考虑从dp下手,定义f[i] 为代表前 i 个位置且第 i 个位置必选选的最小花费,

定义完成以后我们考虑如何转移,显然我们要选的哪个点 J 要满足 在 \left [ j+1,i-1\right ] 之间不包含完整的一个区间不然就漏掉了,转移方程那就是 f[i]=minf[j]+a[i]. 我们知道了 j 的区间范围但是不能 n方的去转移,我们考虑用单调对列来维护 一下 f[j] ,那么问题就解决了,最后我们在n+1位置建一个单点区间,以便于我们不用循环最后一个区间来找最小值了。

struct node
{int l, r;bool operator<(const node &w) const{if (r != w.r)return r < w.r;return l < w.l;}
} p[N];
int a[N], b[N], que[N];
void solve()
{int n, m;cin >> n;vector<int> f(n + 10); // f[i]表示前i个位置且第i个位置必选的最小花费for (int i = 1; i <= n; i++)cin >> a[i];a[++n] = 0;cin >> m;for (int i = 1; i <= m; i++){int l, r;cin >> l >> r;p[i] = {l, r};}sort(p + 1, p + 1 + m);priority_queue<PII> q;for (int i = 1, j = 0, k = 0; i <= n; i++){while (j <= m && p[j].r < i)q.push({p[j].l, p[j].r}), j++;if (q.size() && q.top().xx > k)k = q.top().xx;b[i] = k;}int hh = 0, tt = 0; // 一开始里面有个0,相当于第一个限制区间,前面没有限制区间,也就是可以选单点,提前push一个0for (int i = 1; i <= n; i++){int k = b[i];while (hh <= tt && que[hh] < k)hh++;f[i] = f[que[hh]] + a[i];cout << f[i] << endl;while (hh <= tt && f[que[tt]] >= f[i])tt--;que[++tt] = i;}cout << f[n] << endl;
}

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

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

相关文章

windows下使用压缩包安装mysql8.0数据库

获取安装包 可以访问mysql 官网下载压缩安装包 &#xff08;官网地址&#xff1a;https://downloads.mysql.com/archives/community/&#xff09; 根据自己的需要&#xff0c;下载对应mysql版本&#xff0c;我选择是是8.0.16版本 安装 解压之后&#xff0c;可以看到压缩包…

新概念英语1:Lesson7内容详解

新概念英语1&#xff1a;Lesson7内容详解 如何询问人的个人信息 本课里有两个关于个人信息的问句&#xff0c;一个是问国籍&#xff0c;一个是问工作&#xff0c;句型如下&#xff1a; what nationality are you?询问国籍 回复一般就是我是哪国人&#xff0c;I’m Chinese…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《基于老化成本实时次梯度的异构储能系统功率分配策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

【C++ 异或】奇数

异或知识&#xff1a;异或_百度百科 (baidu.com) 题目描述 给出 N 个正整数&#xff0c;其中只有一个数出现了奇数次&#xff0c;其余的数都出现偶数次。求那个出现了奇数次的数。 输入 第一行是一个整数 N&#xff1b; 第二行有 N 个正整数&#xff0c;两个整数之间用一个…

Vue3 大量赋值导致reactive响应丢失问题

问题阐述 如上图所示&#xff0c;我定义了响应式对象arrreactive({data:[]})&#xff0c;尝试将indexedDB两千条数据一口气赋值给arr.data。但事与愿违&#xff0c;页面上的{{}}在展示先前数组的三秒后变为空。 问题探究 vue3的响应应该与console.log有异曲同工之妙&#xff0…

如何系统的入门大模型?

GPT图解&#xff0c;从0到1构建大模型。 本书将以生动活泼的笔触&#xff0c;将枯燥的技术细节化作轻松幽默的故事和缤纷多彩的图画&#xff0c;引领读者穿梭于不同技术的时空&#xff0c;见证自然语言处理技术的传承、演进与蜕变。在这场不断攀登技术新峰的奇妙之旅中&#xf…

【非常好用的复制功能插件vue-clipboard2】

文章目录 前言一、vue-clipboard2是什么&#xff1f;二、使用步骤1.引入库2.在组件中使用 总结 前言 要实现功能是&#xff0c;点击按钮复制相对应的内容&#xff0c;复制到粘贴板&#xff0c;然后可以随意粘贴到任何地方。 一、vue-clipboard2是什么&#xff1f; 可以把内容…

如何进行软件测试

1、测试用例带给我们的好处 &#xff08;1&#xff09;测试执行者的依据 &#xff08;2&#xff09;使得工作可重复&#xff0c;自动化测试的基础 &#xff08;3&#xff09;评估需求覆盖率 &#xff08;4&#xff09;用例的复用 &#xff08;5&#xff09;积累测试的方法思…

嵌入式典型总线及协议

在嵌入式系统中&#xff0c;各种总线和通信协议扮演着关键的角色&#xff0c;它们连接和协调系统中的各种硬件组件&#xff0c;实现数据传输和控制。本文将介绍一些典型的嵌入式总线及其通信协议&#xff0c;以及它们在嵌入式系统中的应用。 以下是我整理的关于嵌入式开发的一…

华为OD机试 - 按照路径替换二叉树(Java 2024 C卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff…

FreeRTOS教程10 低功耗

目录 1、准备材料 2、学习目标 3、前提知识 3.1、HAL 库基础时钟 3.1.1、使用 SysTick 定时器 3.1.1.1、工作原理 3.1.1.2、中断处理 3.1.2、使用其他定时器 3.1.2.1、工作原理 3.1.2.2、中断处理 3.2、FreeRTOS 基础时钟 3.2.1、工作原理 3.2.2、中断处理 3.3、…

基于SpringBoot精品在线试题库系统

采用技术 基于SpringBoot精品在线试题库系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能结构图 学生管理 教师管理 专业管理 试卷管理 …

美食杂志制作秘籍:引领潮流,引领味蕾

美食杂志是一种介绍美食文化、烹饪技巧和美食体验的杂志&#xff0c;通过精美的图片和生动的文字&#xff0c;向读者展示各种美食的魅力。那么&#xff0c;如何制作一本既美观又实用的美食杂志呢&#xff1f; 首先&#xff0c;你需要选择一款适合你的制作软件。比如FLBOOK在线制…

VUE+Vant实现H5组织架构选人选公司组件

提醒自己&#xff1a; 这是之前的逻辑&#xff0c;或许你重新写会有更好的方法&#xff0c;可以参考逻辑&#xff01;&#xff01;&#xff01; 功能介绍 1.有面包屑点击切换 2.有公司、部门、人员 3.单选、多选实现 4.编辑/回显 5.使用随意切换层级和跳转到指定层级回显等功…

设计编程网站集:生活部分:饮食+农业,植物(暂记)

这里写目录标题 植物相关综合教程**大型植物&#xff1a;****高大乔木&#xff08;Trees&#xff09;&#xff1a;** 具有坚硬的木质茎&#xff0c;通常高度超过6米。例如&#xff0c;橡树、松树、榉树等。松树梧桐 **灌木&#xff08;Shrubs&#xff09;&#xff1a;** 比乔木…

html5cssjs代码 032 边框属性示例

html5&css&js代码 032 边框属性示例 一、代码二、解释 该HTML文件定义了一个网页页面&#xff0c;主要介绍了HTML5中CSS边框属性的用法。 一、代码 <!DOCTYPE html> <html lang"zh-cn"><head><title>编程笔记 html5&css&j…

mybatis-flex入门体验(一)

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 个人IP&#xff1a;shigen 趁着下午的空闲时间&#xff0c;研究了一下mybatis-flex&#xff0c;看着对我还…

权限提升-Web权限提升篇划分获取资产服务后台系统数据库管理相互转移

知识点 1、权限提升转移-分类&高低&场景 2、Web权限提升及转移-后台&数据库 3、后台权限及转移-转移对象&后台分类 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 基础点 0、为什么我们要学…

2024.3.21div4晚训题解

晚训地址链接VJ地址点击即可传送 A题 相当简单的条件判断题 #include<bits/stdc.h> using namespace std; int main(){int t;cin>>t;while(t--){int x;cin>>x;cout<<"Division ";if(x>1900)cout<<1;else if(x>1600)cout<&l…

使用 Vite 和 Bun 构建前端

虽然 Vite 目前可以与 Bun 配合使用&#xff0c;但它尚未进行大量优化&#xff0c;也未调整以使用 Bun 的打包器、模块解析器或转译器。 Vite 可以与 Bun 完美兼容。从 Vite 的模板开始使用吧。 bun create vite my-app ✔ Select a framework: › React ✔ Select a variant:…