牛客——“葡萄城杯”牛客周赛 Round 53

“葡萄城杯”牛客周赛 R o u n d 53 \Huge{“葡萄城杯”牛客周赛 Round 53} 葡萄城杯牛客周赛Round53

文章目录

  • D. 小红组比赛
    • 题意
    • 思路
    • 标程
  • E. 折半丢弃
    • 题意
    • 思路
    • 标程
  • F.小红走矩阵
    • 题意
    • 思路
    • 标程
  • G. 游游的删点直径
    • 题意
    • 思路
    • 标程

比赛地址: “葡萄城杯”牛客周赛 Round 53

D. 小红组比赛

题意

给出两个数字 n , m n,m n,m,然后给出 n n n组数,每组有 m m m个数,最后给出一个数字 t a r g e t target target。题目要求从每组中选出一个数,要求最后选出的数字之和 t a r g e t target target相差最小,求最小相差多少?

数据范围

  • 1 ≤ n ≤ 100 , 1 ≤ m ≤ 20 1\le n \le 100, 1 \le m \le 20 1n100,1m20
  • 1 ≤ a i , j ≤ 50 1\le a_{i,j} \le 50 1ai,j50
  • 1 ≤ t a r g e t ≤ 5000 1 \le target \le 5000 1target5000

思路

读完题意可以很容易发现是一道分组背包问题的板子题,也是一道基础题,数据范围也符合。

但是这类问题可以使用位运算快速求解。

我们可以通过移位操作模拟加法操作,首先对于第一组数,我们都先将其通过操作保存,我们可以使用 b i t s e t bitset bitset实现位运算操作。那么此时里面每个为‘1’的位的下标即为当前组里的数。

然后之后遍历每一组数的时候,只需重复上述操作。最后 b i t s e t bitset bitset中为**‘1’**的位的下标即为所有选择的可能结果。

然后我们根据 t a r g e t target target来遍历 b i t s e t bitset bitset中对应的位置,通过不断向两边查找,当查找到第一个‘1’时,那么当前位的下标与 t a r g e t target target的差值即为相差的最小值。

这样边实现了 O ( n m ) O(nm) O(nm)时间复杂度的求解。

标程

#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10; int main() {int n, m; cin >> n >> m;bitset<N> b, t;b.set(0);for(int i = 1; i <= n; i ++ ) {t.reset();for(int j = 1; j <= m; j ++ ) {int x; cin >> x;t |= (b << x);}b = t;}int target; cin >> target;int res = target;for(int i = target, j = target; i >= 0 || j <= 100 * 50; i --, j ++ ) {if(i >= 0 && b[i] == 1) {res = target - i; break;}if(j < n * 50 && b[j] == 1) {res = j - target; break;}}cout << res << endl;return 0;
}

E. 折半丢弃

题意

给出一个长度为 n n n的数组 a a a,定义一次操作过程:选择其中任意一个元素 a i a_i ai,然后将其改为$\left \lfloor \frac{a_i}{2} \right \rfloor $。

可以进行任意次操作,要求使得数组的 M E X MEX MEX最大。

  • 多实例 1 ≤ T ≤ 1 0 4 1\le T \le 10^4 1T104
  • 1 ≤ n ≤ 1 0 5 1\le n\le 10^5 1n105
  • 0 ≤ a i ≤ 1 0 6 0\le a_i\le 10^6 0ai106

思路

我们可以从0开始枚举,判断数组中现存的数字是否可以构造出,当不能构造出时,那么就找出了最大的MEX。

在步骤”判断数组中现存的数字是否可以构造出”时,可以先对数组排序,然后从小开始判断。

因此先对数组进行排序,然后遍历整个原数组,并对原数组进行处理:我们对该数进行循环/2操作,直到其在数组中没有出现过。

然后我们从0开始枚举MEX,直到数组中的数字全部小于当前的MEX时结束,此时就得到了答案。

判断数字在数组中是否出现,可以用set容器。

标程

#include<bits/stdc++.h>using namespace std;#define ALL(x) x.begin(), x.end()void Solved() {int n; cin >> n;vector<int> v(n);set<int> st;for(auto &i : v) cin >> i;sort(ALL(v));int res = 0;for(auto i : v) {while(i && st.count(i)) i /= 2;st.insert(i);}while(st.count(res)) res ++;while(st.size() && *st.rbegin() > res) {int x = *st.rbegin();st.erase(x);x /= 2;while(x && st.count(x)) x /= 2;st.insert(x);while(st.count(res)) res ++;}cout << res << endl;
}signed main(void) {int ALL = 1; cin >> ALL;while(ALL -- ) Solved();return 0;
}

F.小红走矩阵

题意

给出一个 n × m n\times m n×m的矩阵,起点和终点分别为 ( 1 , 1 ) , ( n , m ) (1,1),(n,m) (1,1),(n,m),小红每次可以向上下左右移动。

由于矩阵中有障碍,因此小红可以在起点进行一次操作:选择一个障碍并替换为空地,然后选择失去向上下左右四个方向中的一个移动的能力。

求小红从起点到达终点的最小步数,如果无法到达则输出 − 1 -1 1

数据范围:

  • 1 ≤ n , m ≤ 1000 1\le n,m \le 1000 1n,m1000

思路

根据数据范围,我们可以使用bfs来搜,由于我们小红可以选择删去的方向只有五种情况:上、下、左、右、不删。

因此可以先枚举这五种情况,然后在搜索的过程中记录每个障碍物的删除情况。

实现过程中,我们可以使用 b [ x ] [ y ] [ z ] b[x][y][z] b[x][y][z]来表示 ( x , y ) (x,y) (x,y)位置, z ∈ ( 0 , 1 ) z\in (0, 1) z(0,1),若当前为障碍时, z z z有两种情况:删/不删。然后进行搜索即可。

标程

#include<bits/stdc++.h>using namespace std;const int INF = 0x7fffffff;
const int N = 1000 + 10; int n, m, res = INF;
bool a[N][N];
int nxt[5] = {-1, 0, 1, 0, -1};void bfs(int x, int y) {for(int i = -1; i < 4; i ++ ) {queue<tuple<int, int, bool>> q;q.push({x, y, false});vector b(n + 1, vector(m + 1, vector(2, -1)));b[x][y][0] = 0;while(!q.empty()) {auto [x1, y1, z] = q.front(); q.pop();for(int j = 0; j < 4; j ++ ) {if(j == i) continue;int x2 = x1 + nxt[j], y2 = y1 + nxt[j + 1];if(x2 < 1 || x2 > n || y2 < 1 || y2 > m) continue;bool z1 = z;if(a[x2][y2]) {if(z) continue;else z1 = true;}if(b[x2][y2][z1] != -1) continue;b[x2][y2][z1] = b[x1][y1][z] + 1;q.push({x2, y2, z1});}}if(b[n][m][0] != -1) res = min(res, b[n][m][0]);if(i != -1 && b[n][m][1] != -1) res = min(res, b[n][m][1]);}
}int main() {cin >> n >> m;for(int i = 1; i <= n; i ++ ) {for(int j = 1; j <= m; j ++ ) {char ch; cin >> ch;a[i][j] = (ch == '.' ? 0 : 1);}}bfs(1, 1);cout << (res == INF ? -1 : res) << endl;return 0;
}

G. 游游的删点直径

题意

给出一棵n个节点,n-1条边的树,然后用 f ( i ) f(i) f(i)表示不经过i号节点的所有路径中,最长的路径长度。

题目要求输出 f ( 1 ) . . . f ( n ) f(1)...f(n) f(1)...f(n)的全部值。

数据范围:

  • 1 ≤ n ≤ 1 0 5 1\le n \le 10^5 1n105
  • 保证树联通,没有重边

思路

其实通过题目要求我们就能够发现,相邻两个节点的 f ( i ) f(i) f(i)必然存在联系,如果之前做过类似题或者了解过的应该能很快想到。

然后我们来观察相邻两个节点之间的关系:

标程


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

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

相关文章

FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前我们分享了FastAPI&#xff08;七十一&#xff09;实战开发《在线课程学习系统》接口开发-- 查看留言&#xff0c;这次我们分享留言列表开发。 获…

i2c中结构体 数据传输 i2c Tools使用

I2C中重要结构体 在I2C&#xff08;Inter-Integrated Circuit&#xff09;通信中&#xff0c;涉及的主要结构体通常用于描述设备、消息和传输的配置。以下是一些常见的I2C结构体及其作用&#xff1a; i2c_adapter: 这是一个代表I2C总线适配器的结构体。它包含与该I2C总线相关的…

Hive3:Centos7环境部署Hive服务

一、安装说明 1、Hadoop集群情况 3台机器&#xff1a;4G2C、2G2C、2G2C 安装教程&#xff1a;Centos7环境安装Hadoop集群 2、安装MySQL&#xff0c;用于存储Hive的元数据 在102机器上安装MySQL 安装MySQL使用服务器的root账号 3、最后安装Hive 安装hive过程使用服务器的atgu…

dpdk编译安装以及接收udp报文(基于ubuntu)

目录 1、编译 2、设置运行环境 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 3.2、测试 3.3、代码 4、其他 1、编译 代码下载&#xff1a; DPDK 下载版本&#xff1a;DPDK 19.08.2 export RTE_SDK/root/dpdk-stable-19.08.2/ export RTE_TARGETx86_64-native-li…

STM32简介

1.STM32的三个重要特征 32位微控制器&#xff0c;也称作MCU。 由ST&#xff08;意法半导体&#xff09;公司开发。 以ARM-Cortex-M为核心。 2.STM32的优点 3.ARM ARM是RISC精简指令集的代表&#xff0c;很多移动设备都是基于ARM架构的。ARM自2004年以后放弃使用数字命名法…

Fantastic-admin:Vue 中后台管理系统

Fantastic-admin&#xff1a;Vue 中后台管理系统 在当今的前端开发世界里&#xff0c;fantastic-admin 作为一款功能强大的 Vue 中后台管理系统框架&#xff0c;简直是开发者的福音。本文将介绍 fantastic-admin 的基本信息、特点&#xff0c;以及如何快速上手和使用。 项目简介…

快速搞定分布式RabbitMQ---RabbitMQ进阶与实战

本篇内容是本人精心整理&#xff1b;主要讲述RabbitMQ的核心特性&#xff1b;RabbitMQ的环境搭建与控制台的详解&#xff1b;RabbitMQ的核心API&#xff1b;RabbitMQ的高级特性;RabbitMQ集群的搭建&#xff1b;还会做RabbitMQ和Springboot的整合&#xff1b;内容会比较多&#…

内存泄漏详解

文章目录 什么是内存泄漏内存泄漏的原因排查及解决内存泄漏避免内存泄漏及时释放资源设置合理的变量作用域及时清理不需要的对象避免无限增长避免内部类持有外部类引用使用弱引用 什么是内存泄漏 内存泄漏是指不使用的对象持续占有内存使得内存得不到释放&#xff0c;从而造成…

AI绘画进阶工具 ComfyUI 新版来啦!操作界面详解!取消悬浮面板,自带工作流管理功能!(附安装包)

大家好&#xff0c;我是画画的小强 在 7 月初的一次更新中&#xff0c;ComfyUI 官方推出了 Beta 版 UI&#xff0c;取消了原本的悬浮面板&#xff0c;还新增了工作流管理功能&#xff0c;整体使用体验比之前好了很多。今天就为大家详细介绍一些新版 UI 的特点和用法。 一、启…

HDBaseT远距离无压缩传输系统源头厂家

HDBaseT双绞线延长器是一款集成HDBaseT的远距离高清信号无压缩、无延时传输器&#xff0c;HDMI信号从接收端输出&#xff0c; 信号分辨率高达4Kx2K可以通过单根CAT5/CAT6网线将信号长距离传输高清无压缩音视频信号&#xff0c; 采用单根网线最远可传输70/100米&#xff0c; …

Hive-内部表和外部表

区别 内部表实例 准备数据 查看数据 删除数据 外部表实例 准备数据 查看数据 删除数据 区别 内部表&#xff1a;管理元数据&#xff08;记录数据的文件和目录的信息&#xff09;和数据。当删除内部表时&#xff0c;会删除数据和表的元数据&#xff0c;所以当多个表关…

LLM推理优化——KV Cache篇(百倍提速)

LLM推理优化——KV Cache篇&#xff08;百倍提速&#xff09; 注意&#xff1a;KV Cache本质上是空间换时间的技术。与计算机组成原理中的cache不同&#xff0c;它不涉及访存优化。 不知道大家在用LLM的时候&#xff0c;有没有注意到一个问题&#xff1a;我们在输入我们的问题…

vscode搭建rust开发环境

由于rustrover不是免费的&#xff0c;此处教学搭建一套基于vscode的rust开发环境&#xff0c;可运行&#xff0c;可调式 1.下载vscode1.91.1 Download Visual Studio Code - Mac, Linux, Windows 2.下载插件 打开网站下载插件 rust-analyzer-0.4.2049、vscode-lldb-1.10.0、…

java使用hutool工具判断ip或者域名是否可用,java使用ping判断ip或者域名是否可用

1.导入hutool的maven依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>2.复制以下代码直接运行 import cn.hutool.core.net.NetUtil;public class …

论文解读:DiAD之SG网络

目录 一、SG网络功能介绍二、SG网络代码实现 一、SG网络功能介绍 DiAD论文最主要的创新点就是使用SG网络解决多类别异常检测中的语义信息丢失问题&#xff0c;那么它是怎么实现的保留原始图像语义信息的同时重建异常区域&#xff1f; 与稳定扩散去噪网络的连接&#xff1a; S…

将 magma example 改写成 cusolver example eqrf

1&#xff0c;简单安装Magma 1.1 下载编译 OpenBLAS $ git clone https://github.com/OpenMathLib/OpenBLAS.git $ cd OpenBLAS/ $ make -j DEBUG1 $ make install PREFIX/home/hipper/ex_magma/local_d/OpenBLAS/1.2 下载编译 magma $ git clone https://bitbucket.org/icl…

【Kubernetes】二进制部署k8s集群(中)之cni网络插件flannel和calico

&#xff01;&#xff01;&#xff01;继续上一篇实验部署&#xff01;&#xff01;&#xff01; 目录 一.k8s的三种网络模式 1.Pod 内容器与容器之间的通信 2.同一个 Node 内 Pod 之间的通信 3.不同 Node 上 Pod 之间的通信 二.k8s的三种接口 三.Flannel 网络插件 1.U…

美摄科技企业级视频拍摄与编辑SDK解决方案

在数字化浪潮汹涌的今天&#xff0c;视频已成为企业传递信息、塑造品牌、连接用户不可或缺的强大媒介。为了帮助企业轻松驾驭这一视觉盛宴的制作过程&#xff0c;美摄科技凭借其在影视级非编技术领域的深厚积累&#xff0c;推出了面向企业的专业视频拍摄与编辑SDK解决方案&…

每日OJ_牛客CM26 二进制插入

目录 牛客CM26 二进制插入 解析代码 牛客CM26 二进制插入 二进制插入_牛客题霸_牛客网 解析代码 m:1024&#xff1a;100000000 00 n:19 &#xff1a; 10011 要把n的二进制值插入m的第j位到第i位&#xff0c;只需要把n先左移j位&#xff0c;然后再进行或运算&#xff08;|&am…

高品质定制线缆知名智造品牌推荐-精工电联:高压线缆行业定制服务的领航者

定制线缆源头厂家推荐-精工电联&#xff1a;高压线缆行业定制服务的领航者 在当今这个高度信息化的社会&#xff0c;电力传输与分配系统的稳定运行至关重要。作为连接各个电力设备的纽带&#xff0c;高压线缆的质量直接关系到电力系统的安全性和稳定性。在定制高压线缆行业中&a…