每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)

相遇

原题链接登录—专业IT笔试面试备考平台_牛客网

题目描述

运行代码

#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
if(a==b)
{ cout<<"p";
} 
else if(a - b == 1 || (a == 1 && b == 3)){cout << "b";}
else 
{cout<<"a";
}return 0;    
}

代码思路

分析输赢情况,总结输出结果即可

宝石(模拟+数学)

原题链接登录—专业IT笔试面试备考平台_牛客网

题目描述

 

运行代码

#include<iostream>
#include<string.h>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b;
if(b<=2*a)
{
c=5*b+a;
}
else 
{c=11*a;
} cout<<c<<endl;return 0;
}

代码思路

数学情况总结,观察路段最短路线

相助(模拟+数组)

原题链接登录—专业IT笔试面试备考平台_牛客网

题目描述

运行代码

#include<iostream>
using namespace std;
const int N = 5e5+10;
int a[N];
int main()
{int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}if(n==1){cout<<"-1"<<endl;return 0;}if(a[1]==a[n]){cout<<1<<endl;return 0;}for(int i=2;i<n-1;i++){if(a[1]==a[i]&&a[i+1]==a[n]){cout<<"2"<<endl;return 0;}}cout<<-1;return 0;
}

代码思路

对给定的数据进行遍历查找,尝试找到两个相邻的相同元素,然后删除这两个元素。代码首先检查首尾两个元素是否相等,若相等则输出2即可;接着从第二个元素开始遍历,寻找与首尾相同的元素,若找到则输出2;如果没有找到任何符合条件的组合,则输出-1。

相依(dp的优化)

原题链接:登录—专业IT笔试面试备考平台_牛客网

题目描述

 

运行代码

#include <iostream>
#include<vector>
using namespace std;
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);	int t = 1;while (t--) {int n;cin >> n;vector<int> a(n + 1);for (int i = 1; i <= n; i++) {cin >> a[i];}vector<int> dp(n + 1, -1);vector<int> st(n + 1, -1);	dp[0] = 0;st[a[1]] = 1;for (int i = 2; i <= n; i++) {int x = st[a[i]];if (x != -1 && dp[x - 1] != -1) {dp[i] = dp[x - 1] + 1;			if (dp[i - 1] != -1 && dp[i - 1] < dp[x - 1]) {st[a[i]] = i;}} else {st[a[i]] = i;}}	cout << dp[n] << "\n";}	return 0;
}

代码思路

通过动态规划来求解最小的操作次数。首先,代码定义了一个名为dp的向量,用来存储每个位置上的最小操作次数。同时,还有一个名为st的向量,用来记录每个元素最近被删除的位置。st向量的值为-1表示该元素尚未被删除。

接下来,代码从第二个元素开始遍历整个数组。在遍历过程中,代码会比较当前位置的元素与之前元素的值,如果相等,说明可以通过删除一段区间内的元素来使数组变为空。此时,代码会更新dp向量,并将当前元素的索引存入st向量中。

需要注意的是,在遍历过程中,代码还会检查当前元素的前一个元素是否比当前元素的最小操作次数少。如果是的话,代码会更新st向量,以便反映新的最小操作次数。

最后,代码输出dp[n],即数组变为零的最小操作次数。如果无法使数组变为零,dp[n]的值将会是-1。

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

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

相关文章

Kong网关命令详解

Kong网关的所有命令行指令都在 /usr/local/share/lua/5.1/kong/cmd 目录内。 cd /usr/local/share/lua/5.1/kong/cmdcheck.lua debug.lua hybrid.lua migrations.lua quit.lua restart.lua runner.lua stop.lua vault.lua config.lua health.lua init.lua prepare.…

系统架构设计师【第10章】: 软件架构的演化和维护 (核心总结)

文章目录 10.1 软件架构演化和定义的关系10.1.1 演化的重要性10.1.2 演化和定义的关系 10.2 面向对象软件架构演化过程10.2.1 对象演化10.2.2 消息演化10.2.3 复合片段演化10.2.4 约束演化 10.3 软件架构演化方式的分类10.3.1 软件架构演化时期10.3.2 软件架构静态演…

eNSP学习——连接RIP与OSPF网络

目录 相关主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建RIP和OSPF网络 3、配置双向路由引入 4、手工配置引入时的开销值 相关主要命令 [R1-ospf-1]import-route rip 1 //引入RIP路由 [R1-rip-1]import-route ospf 1 …

vue中编辑器无法识别自定义指令

在根目录新建web-types.json&#xff0c;添加下列内容 {"$schema": "https://json.schemastore.org/web-types","framework": "vue","name": "name written in package.json","version": "versio…

【计算机毕业设计】353微信小程序零食批发交易管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

微信小程序毕业设计-校园服务平台系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

RabbitMQ二、RabbitMQ的六种模式

一、RabbitMQ的六种模式 RabbitMQ共有六种工作模式&#xff1a; 简单模式&#xff08;Simple&#xff09;工作队列模式&#xff08;Work Queue&#xff09;发布订阅模式&#xff08;Publish/Subscribe&#xff09;路由模式&#xff08;Routing&#xff09;通配符模式&#xff…

代码随想录算法训练营第四十六天 | 完全背包理论基础、518. 零钱兑换 II、377. 组合总和 Ⅳ

完全背包理论基础 视频讲解&#xff1a; https://www.bilibili.com/video/BV1uK411o7c9 https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85.html 完全和01背包的区别&#xff1a; …

通俗易懂->哈希表详解

目录 一、什么是哈希表&#xff1f; 1.1哈希表长什么样&#xff1f; 1.2为什么会有哈希表&#xff1f; 1.3哈希表的特点 1.3.1 取余法、线性探测 1.3.2 映射 1.3.3负载因子 1.4哈希桶 1.5闲散列与开散列 1.6总结 二、设计hash表 1、哈希表的设计 1&#xff09;插入…

Nginx实战:日志打印自定义请求头

nginx的日志可以打印很多内容&#xff0c;但是有时候自定义的请求头该怎么打印呢&#xff1f;像下面这种场景&#xff1a; 其实很简单&#xff0c;设置日志打印格式log_format的时候&#xff0c;自定义的请求头用 【$http_自定义请求头名】 的格式就可以打印出来 例如你的自定义…

如何掌握Spring事件发布和监听机制?

在软件设计和开发过程中&#xff0c;事件驱动是一种非常主流的架构模式&#xff0c;它的基本组成见下图&#xff0c;可以看到存在一个事件中心&#xff0c;而各个服务可以执行事件发布、订阅和消费等基本过程。 事件驱动架构代表的是一种架构设计风格&#xff0c;实现方法和工具…

[图解]企业应用架构模式2024新译本讲解05-表模块2

1 00:00:00,970 --> 00:00:03,440 接下来&#xff0c;我们就来看案例了 2 00:00:03,690 --> 00:00:09,260 案例跟上一次事务脚本案例是一样的 3 00:00:11,210 --> 00:00:13,130 也是收入确认这个案例 4 00:00:14,460 --> 00:00:15,580 这是表结构 5 00:00:15,7…

WHAT - Typescript 中 structural-type-system 结构类型系统

目录 一、结构类型系统与名义类型系统二、结构类型系统的基本概念三、泛型和结构类型系统四、类型别名和接口的兼容性五、总结 一、结构类型系统与名义类型系统 TypeScript 中的结构类型系统&#xff08;Structural Type System&#xff09;是 TypeScript 的核心特性之一&…

解决uniapp里的onNavigationBarSearchInputClicked不生效

如何在uniapp里使用onNavigationBarSearchInputClicked。 1、在page.json里配置 "pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首页","navigationStyle": "cu…

【Android】手动下载gradle插件包,解决gradle插件包下载不全问题。

问题描述 拉取别人的项目时&#xff0c;因为网络问题gradle插件包一直下载不全&#xff0c;一直build。 解决方案&#xff1a; 打开gradle>wrapper文件下gradle-wrapper.properties&#xff0c;查看需要下载gradle-7.2-bin.zip。 distributionBaseGRADLE_USER_HOME distr…

cmd窗口输出内容乱码问题

出现这样的问题是因为编码格式和解码格式不一样导致的&#xff0c;cmd窗口的默认解码格式为GBK&#xff0c;如想修改cmd默认编码格式可以按照下面步骤操作&#xff1a;打开cmd窗口输入&#xff1a;chcp 65001 65001指的是utf-8编码如果不清楚编码对应的 页面编码是是多少&#…

国内外知名的低代码开发平台下载地址

以下是国内外几款低代码开发平台的列表&#xff0c;包含了下载地址、适应操作系统、是否可以独立部署、优点、缺点以及是否包含流程引擎的信息。 平台名称 下载地址 适应操作系统 是否可以独立部署 优点 缺点 是否包含流程引擎 国内平台 阿里云宜搭 阿里云官网 跨平台…

文件批量重新命名

实用 如果你想忽略原文件的后缀&#xff0c;将所有文件&#xff08;除了 .py 文件&#xff09;都重命名为以 .jpg 结尾&#xff0c;并且使用序号来命名&#xff0c;你可以使用以下脚本&#xff1a; # renamefile.py import os# 定义原始目录和起始序号 original_directory &q…

C++操纵符用法

C中的操纵符&#xff08;Manipulators&#xff09;是用于格式化输入输出的特殊工具。它们可以在输出流中控制各种格式&#xff0c;如设置字段宽度、精度、填充字符等。以下是一些常用的操纵符及其用法&#xff1a; setw(int width): 设置字段宽度为width个字符。 cout <<…

访问github加速方法续集dev-sidecar

访问github加速方法续集dev-sidecar dev-sidecar 重要提醒 ------------------------------重要提醒1--------------------------------- 注意&#xff1a;由于electron无法监听windows的关机事件&#xff0c;开着ds情况下直接重启电脑&#xff0c;会导致无法上网&#xff0c…