[Algorithm][综合训练][对称之美][经此一役小红所向无敌][连续子数组最大和]详细讲解

目录


1.对称之美

1.题目链接


2.算法原理详解 && 代码实现

  • 优化版本:双指针(判断回文) + 哈希(判断两个字符串中是否有相同字符)
    • 自己思路的纠正:没必要一定要把所有的字符串找出来再判断,可以直接看对应两字符串是否出现一样的字符即可,出现则这两个位置是"回文"的,否则再也不用判断
    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;// 判断两个字符串中是否有相同字符
    vector<vector<bool>> visit;bool Check(int left, int right)
    {for(int i = 0; i < 26; i++){if(visit[left][i] && visit[right][i]){return true;}}return false;
    }int main()
    {int t = 0;cin >> t;while(t--){int n = 0;cin >> n;visit.clear();visit.resize(n, vector<bool>(26, false));string str;for(int i = 0; i < n; i++) // 将所有字符串的字符信息存入hash{cin >> str;for(const auto& ch : str){visit[i][ch - 'a'] = true;}}// 判断回文int left = 0, right = n - 1;while(left < right){if(!Check(left, right)){break;}left++, right--;}if(left < right){cout << "No" << endl;}else{cout << "Yes" << endl;}}return 0;
    }
    

2.经此一役小红所向无敌

1.题目链接


2.算法原理详解 && 代码实现

  • 自己的版本:模拟 --> 可能会有超时风险,但本题没超时
    #include <iostream>
    using namespace std;int main()
    {long long a, b, h, k;cin >> a >> h >> b >> k;long long cnt = 0;while(h > 0 && k > 0){cnt += a + b;h -= b, k -= a;}if(h <= 0 && k <= 0){}else if(h <= 0){cnt += b * 10;}else if(k <= 0){cnt += a * 10;}cout << cnt << endl;return 0;
    }
    
  • 优化版本:数学 --> 直接计算结果
    #include <iostream>
    using namespace std;int main()
    {long long a, b, h, k, ret = 0;cin >> a >> h >> b >> k;// 1.计算互砍多少回合long long n = min(h / b, k / a);ret += n * (a + b);// 2.计算剩余血量h -= n * b;k -= n * a;// 3.判断是否都还活着if(h > 0 && k > 0){h -= b;k -= a;ret += a + b;}// 4.判断是否会放大if(h > 0 || k > 0){ret += 10 * (h > 0 ? a : b);}cout << ret << endl;return 0;
    }
    

3.连续子数组最大和

1.题目链接


2.算法原理详解 && 代码实现

  • 自己的版本:双指针
    #include <iostream>
    #include <vector>
    using namespace std;int main()
    {int n = 0;cin >> n;vector<long long> nums(n, 0);for(auto& x : nums){cin >> x;}int left = 0, right = 0;long long cnt = 0, maxValue = -0x3f3f3f3f;while(right < n){if((cnt += nums[right]) < nums[right]){cnt = nums[right];left = right;}if(cnt > maxValue){maxValue = cnt;}right++;}cout << maxValue << endl;return 0;
    }
    
  • 优化版本:动态规划 – 线性dp
    • 状态表示dp[i]:以i位置为结尾的所有的子数组中,最大和是多少
    • 状态转移方程dp[i] = max(dp[i - 1] + arr[i], arr[i]);
    #include <iostream>
    #include <vector>
    using namespace std;int main()
    {int n = 0;cin >> n;vector<int> arr(n + 1, 0);vector<int> dp(n + 1, 0);for(int i = 1; i <= n; i++){cin >> arr[i];}int ret = -0x3f3f3f3f;for(int i = 1; i <= n; i++){dp[i] = max(dp[i - 1], 0) + arr[i];ret = max(ret, dp[i]);}cout << ret << endl;return 0;
    }
    

http://www.ppmy.cn/news/1515925.html

相关文章

C# 循环访问目录树详解与示例

文章目录 一、目录树遍历的概念二、使用System.IO命名空间三、DirectoryInfo和FileInfo类四、递归遍历目录树五、示例&#xff1a;列出目录树中的所有文件和文件夹六、异常处理七、迭代方法八、总结 在C#中&#xff0c;访问文件系统是常见的需求之一。有时我们需要遍历目录树以…

使用SQLite进行Python简单数据存储的线程安全解决方案

在 Python 中使用 SQLite 进行简单数据存储时&#xff0c;线程安全是一个需要注意的问题。SQLite 本身是线程安全的&#xff0c;但在多线程环境下&#xff0c;可能仍然需要做一些额外的工作来确保数据访问的安全性。 1、问题背景 一位开发者正在编写一个简单的聊天服务器和客户…

leetcode 数组+哈希+双指针+子串+滑动窗口

——————双指针 283. 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] …

sheng的学习笔记-AI-半监督学习

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是半监督学习 我们在丰收季节来到瓜田&#xff0c;满地都是西瓜&#xff0c;瓜农抱来三四个瓜说这都是好瓜&#xff0c;然后再指着地里的五六个瓜说这些还不好&#xff0c;还需再生长若干天。基于这些信息&a…

数学基础 -- 微积分之线性化

微积分中的线性化 在线性代数和微积分中&#xff0c;线性化是指使用一个线性函数来近似描述非线性函数在某一点附近的行为。在微积分中&#xff0c;线性化通常是通过泰勒展开将一个非线性函数线性化的过程。 线性化公式 给定一个函数 f ( x ) f(x) f(x)&#xff0c;我们可以…

微信小程序开发经验记录

1、把微信开发者工具安装好后&#xff0c;创建小程序。 AppID可以注册下&#xff0c;后续小程序上线会用到&#xff0c;前期可以使用测试号先开发程序&#xff0c;后续修改AppID即可。 模板选择基础模板就行。 2、开发页面如下。 左上角可以控制几个窗口的打开和关闭。模拟器窗…

arm64--内嵌汇编

内嵌汇编代码基本用法 1.作用&#xff1a;对于特定重要和时间敏感的代码进行优化&#xff0c;同时在C语言中访问某些特殊指令&#xff08;例如内存屏障指令&#xff09;来实现特殊功能 2.内嵌汇编代码主要有两种形式 基础内嵌汇编代码&#xff1a;不带任何参数 扩展内嵌汇…

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task05 源大模型微调实战代码精读 RAG测试 AI简历助手代码优化 网课剩余部分

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task05 源大模型微调实战代码精读 RAG测试 AI简历助手代码优化 网课剩余部分 教程基础背景知识&#xff1a; 微调能解决的问题正好是我需要的——模型在某个特定方面上能力不够。我感觉这种情况适用于让模型去完成…

数据仓库系列 5:什么是事实表和维度表,它们有什么作用?

目录 1. 引言&#xff1a;事实表与维度表的魔力2. 事实表&#xff1a;业务活动的数字足迹2.1 什么是事实表?2.2 事实表的特征2.3 事实表的类型2.4 事实表示例2.5 事实表的作用2.6 事实表的设计原则2.7 事实表的查询示例 3. 维度表&#xff1a;为数据赋予意义3.1 什么是维度表?…

vscode附着调试

我有一个程序&#xff0c;是别的程序调用启动的&#xff0c;所以需要等它的进程启动后&#xff0c;再附着上去调试。 编写Launch.json: {"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type"…

day 39 代码随想录 | 打家劫舍 动态规划

198.打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个…

暑期算法训练

目录 A.糖果&#xff08;Candy) B.小红的数组重排 C.牛牛与LCM D.子串 E.勤奋的杨老师 F.清楚姐姐跳格子 G.方块 I H.PUBG A.糖果&#xff08;Candy) 思路 &#xff1a;贪心&#xff0c;为了使操作数最少&#xff0c;我们要尽可能的先吃第二个盒子里的糖果&#x…

C#与其它编程语言有什么区别,以及相关优势有哪些

C#编程语言的主要特性包括**面向对象、统一的类型系统、自动内存管理等**。与其它编程语言相比&#xff0c;C#的优势体现在**跨平台开发支持、强大的语言集成查询&#xff08;LINQ&#xff09;功能、高效的性能**这几个方面。 C#的主要特性&#xff1a; 1. 面向对象&#xff…

python:reportlab 生成PDF文件,生成基因图谱

reportLab是 python的一个第三方库&#xff0c;它能够用来生成PDF文件。这个库提供了一系列的工具&#xff0c;允许用户从简单的文档到复杂的多列布局进行PDF的创建和编辑。 使用 reportLab&#xff0c;你可以执行以下功能&#xff1a; 创建文本块、图片、图表等元素。 利用绘…

Django后台管理Xadmin使用DjangoUeditor富文本编辑器

Django后台管理Xadmin使用DjangoUeditor富文本编辑器 一、下载 点击github下载 https://github.com/twz915/DjangoUeditor3 1、下载完后解压到跟xadmin同一层级目录: 2、解压后名称可能为DjangoUeditor3-master,需要改为DjangoUeditor 3、进入DjangoUeditor目录,把Djan…

米联客FDMA3.2源码分析以及控制BRAM、DDR3读写验证

文章目录 一、FDMA简介二、读写操作时序2.1 写时序2.2 读时序 三、FDMA源码分析四、源码仿真验证4.1 FDMA控制代码4.2 系统框图4.3 仿真结果4.3.1 写通道4.3.2 读通道 五、使用FDMA控制BRAM读写测试5.1 系统框图5.2 读写数据控制模块5.3 仿真结果5.4 下板验证 六、使用FDMA控制…

趣味算法------煤球数目

目录 前言&#xff1a; 题目描述&#xff1a; 解题思路&#xff1a; 具体代码&#xff1a; 前言&#xff1a; 数列在数学中是一个非常基础且重要的概念&#xff0c;它指的是按照一定顺序排列的一系列数。数列中的每一个数被称为该数列的项。 数列可以分为有限数列和无限数列…

计算机毕业设计选题推荐-保险业务管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

使用 SQLite 处理大量小数据库

使用 SQLite 处理大量小数据库时&#xff0c;需要考虑数据库文件的数量、管理方式、性能优化等因素。SQLite 是轻量级的数据库&#xff0c;适合嵌入式系统和小型项目&#xff0c;但在处理大量数据库文件时&#xff0c;仍需要仔细设计和管理。 一、问题背景 近期一个项目中&…

JAVA_10

JAVA_10 JAVA异常机制及bug追踪1. 异常 JAVA异常机制及bug追踪 1. 异常 英文:Exception 所谓异常处理&#xff0c;就是指程序在出现问题时依然可以正确的执行完。Java面向对象处理异常过程 抛出异常:在执行一个方法时&#xff0c;如果发生异常&#xff0c;则这个方法生成代表…