天梯算法Day1整理

Nanami and Arithmetic Sequence

题面

思路

炸鱼题

只有n=1的时候,只有一个等差数列;

其余时候,都是都有无数个等差数列。

代码

#include <iostream>
using namespace std;int  main() {int t, n;cin >> t;while (t--) {cin >> n;if (n == 1)cout << "1\n";elsecout << "-1\n";}return 0;
}

珠宝价值

题面

思路

浓缩一下,题目是在求数组的连续子数组最大和。 

即一个很经典的问题——最大子段和

这题在洛谷上也有,链接在下,感兴趣的朋友可以一试。(注意数据范围的区别)

最大子段和 - 洛谷
 

本题采用动态规划来解

设dp[i]表示[0,i]闭区间以i为右边界的最大子段和(我们并不关注左边界的位置)

最开始有dp[0] = v[0]

由[0,i]推[0,i+1]时,如果dp[i]+v[i+1]>dp[i],则说明加上该值后总和变大,所以需dp[i+1]=dp[i]+v[i+1]。否则,从头开始计和,dp[i+1]=v[i+1]。

最后找到dp数组中的最大值即可

代码

#include <iostream>
using namespace std;#define MAXN 10005int v[MAXN];
int dp[MAXN];int main() {int n;cin >> n;int i = 0;while (n--) {cin >> v[i];i++;}dp[0] = v[0];for (int j = 0; j < i - 1; j++) {if (dp[j] + v[j + 1] > v[j + 1]) {//条件里也可以是dp[j]>0dp[j + 1] = dp[j] + v[j + 1];} else {dp[j + 1] = v[j + 1];}}int maxv = -1e9;for (int j = 0; j < i; j++) {if (dp[j] > maxv)maxv = dp[j];}cout << maxv << endl;return 0;
}

Nanami and Toys Buying Problem

题面

思路

每个a[i]最多只被取一次,最多只有一个b[i]会被取2次以上。

枚举被多次取的玩具,设当前取的为b[i],那么对于行a来说,a[j]>b[i]时才有取的必要,否则不用取。(当j<i时,需要先取出a[i]才能取b[i])

可以按a的大小排序,枚举b,结合二分查找得到j。

代码

先放一份能反映基础思路,但TLE了的代码

#include <iostream>
using namespace std;const int  maxn  = 2e5 + 5;int a[maxn], b[maxn];int main() {int t;cin >> t;while (t--) {int n, k;cin >> n >> k;int k2 = k;long long ans = 0;for (int i = 0; i < n; i++)cin >> a[i];for (int i = 0; i < n; i++)cin >> b[i];int i, j;for (i = 0; i < n - 1; i++)for (j = 0; j < n - 1 - i; j++)if (a[j] < a[j + 1]) {swap(a[j], a[j + 1]);swap(b[j], b[j + 1]);}for (int i = 0; i < n; i++) {k = k2;long long currentans = 0;if (k >= 1) {currentans += a[i];k--;}int maxj = -1;for (int j = 0; j < n; j++) {if (j != i) {if (a[j] > b[i] && k > 0) {currentans += a[j];k--;maxj = j;}} elsecontinue;}if (k > 0)currentans += 1ll * k * b[i];if (currentans > ans)ans = currentans;}cout << ans << endl;}return 0;
}

再放一份优化过的代码,使用二分+前缀和

#include <iostream>
#include <algorithm>using namespace std;const int maxn = 2e5 + 5;int T, n, k;int a[maxn], b[maxn], s[maxn];long long preSum[maxn];long long spe1()
{sort(a + 1, a + n + 1);return a[n];
}long long ans, sum;int main()
{cin >> T;for (int rt = 1; rt <= T; rt++){ans = 0;cin >> n >> k;for (int i = 1; i <= n; i++) {cin >> a[i]; s[i] = a[i];}for (int i = 1; i <= n; i++) cin >> b[i];if (k == 0){cout << 0 << '\n';continue;}if (k == 1) {cout << spe1() << '\n';continue;}sort(s + 1, s + n + 1);for (int i = 1; i <= n; i++) preSum[i] = preSum[i - 1] + s[i];int res = k - 1;for (int i = 1; i <= n; i++) {sum = a[i];//cout << sum << '\n';int num = n + 1 - (upper_bound(s + 1, s + n + 1, b[i]) - s);if (a[i] <= b[i]) {if (res <= num) sum += preSum[n] - preSum[n - res];else sum += preSum[n] - preSum[n - num] + 1ll * (res - num) * b[i];} else {if (res < num - 1) {int lowPos = lower_bound(s + 1, s + n + 1, a[i]) - s;if (a[i] >= s[n - res + 1] && lowPos >= n - res + 1){sum += preSum[n] - preSum[n - res - 1] - a[i];}else {sum += preSum[n] - preSum[n - res];}}else sum += preSum[n] - preSum[n - num] - a[i] + 1ll * (res - (num - 1)) * b[i];}ans = max(ans, sum);//cout << sum << '\n' << '\n';}cout << ans << '\n';}return 0;
}

类似题目(某厂面试题)

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

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

相关文章

【计算机网络】深入掌握计算机网络的核心要点

写在前面 前言四层模型网络地址管理Linux下设置ipARP请求包总结 前言 计算机网络是指将分散的计算机设备通过通信线路连接起来&#xff0c;形成一个统一的网络。为了使得各个计算机之间能够相互通信&#xff0c;需要遵循一定的协议和规范。OSI参考模型和TCP/IP参考模型是计算机…

JavaScript高级:异常和debugger调试

1 抛出异常 function fn(x, y) {if (!x || !y) {throw new Error(参数不能为空&#xff01;) // 会终止程序}return x y}console.log(fn()) 2 捕获异常 try...catch 捕获异常 try {// 可能抛出异常的代码const p document.querySelector(.p)p.style.color red} catch (err)…

通用CI/CD软件平台TeamCity全新发布v2023.11——增强Git托管平台的集成

TeamCity是一个通用的 CI/CD 软件平台&#xff0c;可以实现灵活的工作流、协作和开发做法。我们的解决方案将帮助在您的 DevOps 流程中成功实现持续集成、持续交付和持续部署。 TeamCity 2023.11正式版下载 TeamCity 2023.11 带来了矩阵构建和构建缓存等多项备受期待的功能&a…

DolphinScheduler数仓任务管理规范

目录 一、DolphinScheduler调度数仓任务现状分析 2.1 一个任务流构建数仓所有的逻辑节点 2.2 每个逻辑节点构建一个任务流 二、数仓任务管理调度需求分析 三、DolphinScheduler数仓开发任务管理规范 四、结语 前言&#xff1a;大数据领域对多种任务都有调度需求&#xff…

Asp .Net Core 系列:Asp .Net Core 配置 System.Text.Json

文章目录 简介Asp .Net Core 如何配置 System.Text.Json所有配置全局配置 对比 Newtonsoft.Json无实体类型下操作 Json自定义转换器处理 Dynamic 类型封装常用配置封装 JsonHelper 帮助类 简介 System.Text.Json 命名空间提供用于序列化和反序列化 JavaScript 对象表示法 (JSO…

JavaScript高级:深浅拷贝

目录 1 引言 2 浅拷贝 2.1 拷贝数组 1.2 拷贝对象 3 赋值操作和浅拷贝的比较 4 深拷贝 4.1 前置知识 --> 递归函数 4.2 使用递归实现深拷贝 4.3 js库中的lodash里面的cloneDeep内部实现深拷贝 4.4 利用JSON实现深拷贝 深浅拷贝只针对引用数据类型 1 引言 假如我们…

如何在Windows系统使用Plex部署影音服务与公网访问本地资源【内网穿透】

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通…

人工智能时代:AI提示工程的奥秘 —— 驾驭大语言模型的秘密武器

文章目录 一、引言二、提示工程与大语言模型三、大语言模型的应用实践四、策略与技巧五、结语《AI提示工程实战&#xff1a;从零开始利用提示工程学习应用大语言模型》亮点内容简介作者简介目录获取方式 一、引言 随着人工智能技术的飞速发展&#xff0c;大语言模型作为一种新…

如何发布自己的npm包:

1.创建一个打包组件或者库&#xff1a; 安装weback&#xff1a; 打开项目&#xff1a; 创建webpack.config.js,创建src目录 打包好了后发现两个js文件都被压缩了&#xff0c;我们想开发使用未压缩&#xff0c;生产使用压缩文件。 erserPlugin&#xff1a;&#xff08;推荐使用…

UAD155A0111 3BHE029110R0111

UAD155A0111 3BHE029110R0111 UAD155A0111 3BHE029110R0111 UAD155A0111 3BHE029110R0111如何通过CDMA模块实现车载终端数据通信 ... 包括单片机(rabbit2000)、GPS模块、CDMA 手机模块、GSM手机模块、铁电存储器、 ... 提取经纬度信息&#xff0c;通过GSM和 CDMA 模块分别采…

YIA主题如何关闭新版本升级提示?WordPress主题怎么取消升级提醒?

前两天YIA主题发布了升级到2.8版本&#xff0c;新增了一些功能&#xff0c;优化调整修复了一些功能&#xff0c;但是这些功能调整幅度不大&#xff0c;加上boke112百科使用的YIA主题已经进行了很多方面的个性化修改&#xff0c;所以就懒得升级了&#xff0c;但是每次进入WordPr…

Spring的事件监听机制

这里写自定义目录标题 1. 概述&#xff08;重点&#xff09;2. ApplicationEventMulticaster2.1 SimpleApplicationEventMulticaster2.2 AbstractApplicationEventMulticaster 3. ApplicationListener3.1 注册监听器3.2 自定义 4. SpringApplicationRunListeners 1. 概述&#…

Python接口自动化测试(接口状态)

本节开始&#xff0c;开始介绍python的接口自动化测试&#xff0c;首先需要搭建python开发环境&#xff0c;到https://www.python.org/下载python 版本直接安装就以了&#xff0c;建议 下载python2.7.11版本&#xff0c;当然&#xff0c;也是可以下载python最新版本的。 接口测…

纯干货,3步轻松生成智慧乡村3D场景!

临近春节返乡&#xff0c;网上有个话题又重新上了热门&#xff0c;“以你的专业&#xff0c;回到家乡能做什么贡献&#xff1f;”虽然很多人调侃&#xff0c;对家乡最大的贡献就是“离开家乡”&#xff0c;但其实现在农村老家的发展也离不开打工人在远方的支持。 比如AMRT3D引…

Docker基础(持续更新中)

# 第1步&#xff0c;去DockerHub查看nginx镜像仓库及相关信息# 第2步&#xff0c;拉取Nginx镜像 docker pull nginx# 第3步&#xff0c;查看镜像 docker images # 结果如下&#xff1a; REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 60…

【数学】【记忆化搜索 】【动态规划】964. 表示数字的最少运算符

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 数学 记忆化搜索 LeetCoce964表示数字的最少运算符 给定一个正整数 x&#xff0c;我们将会写出一个形如 x (op1) x (op2) x (op3) x … 的表达式&#xff0c;其中每…

接口性能优化常见12式

目录 1.批处理 2.异步处理 3.空间换时间 4.预处理 5.池化思想 6.串行改并行 7.索引 8.避免大事务 9.优化程序结构 10.深分页问题 11.SQL优化 12.锁粒度避免过粗 1.批处理 批量思想&#xff1a;批量操作数据库&#xff0c;这个很好理解&#xff0c;我们在循环插入场…

微服务—Docker

目录 初识Docker Docker与虚拟机的区别 镜像与容器 Docker架构 常见Docker命令 镜像命令 容器命令 数据卷挂载 直接挂载 初识Docker 在项目部署的过程中&#xff0c;如果出现大型项目组件较多&#xff0c;运行环境也较为复杂的情况&#xff0c;部署时会碰到一些问题&…

算法练习-逆波兰表达式求值(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;栈与队列 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c…

Plant, Cell Environment:DNA pull down技术助力揭示AP2/ERF类转录因子提高芍药耐高温能力的分子机制

芍药是一种传统的中药材&#xff0c;并且具有极高的欣赏价值&#xff0c;其生长发育经常受到高温胁迫的影响。褪黑素是一种内源性微分子吲哚胺化合物&#xff0c;在各种生物体中具有多种生理功能&#xff0c;大量研究表明调节与褪黑素生物合成相关的基因来提高植物对高温的耐受…