c++2024寒假J312实战班2.4

长话短说,简明扼要一直是我的行事风格,如有不精准的地方,就到网上去搜,好吧。

今天分享我们做的四道题,都挺简单的,就是难思考。

题目列表:

        1.Maximum Subarray Sum

                2.分解因数

                        3.公交换乘

                                4.Vacation

我们先来看一下第一道题。

Maximum Subarray Sum

        我们先看一下题目,把英文翻译成中文就是“最大子数组和”。结合这个再看一下题面:

Given an array of n integers, your task is to find the maximum sum of values in a contiguous, nonempty subarray.

意思就是:

给定一个包含n个整数的数组,计算连续非空子数组元素和的最大值。

我们再来理解一下这段话:
比如输入:

8 (n个数据)
-1 3 -2 5 3 -5 2 2 (每个元素的值,一共n个元素)

输出:

9

        问什么,我们来看一下,最长的应该是第2个(3),到第5个(3)。加起来就是3+-2+5+3 = 9。问什么后面的不算呢,因为|-5| 和 2 + 2 = 4,那个大? 肯定 |-5| 更大呀,所以最后的答案一定小于0,就会产生反向效益让答案减小

我门就有这样的解题思路:
以 这个元素 结尾连续子序列最大和。如果将 这个元素 加入之前子序列和能够使得和更大,就将 这个元素 加入;否则重新开始一个新的子序列

我们就看一下答案:

//Maximum Subarray Sum
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main() {int n;cin >> n;vector<LL> A(n);for (LL &a : A) cin >> a;LL d = A[0], maxd = d;for(int i = 1; i < n ; i++)d = max(A[i], d + A[i]), maxd = max(maxd, d);  cout << maxd << '\n';return 0;
}

尽量手写,不要复制,可以加强对代码的理解。

分解因数

这个没什么难度吧。跑一下样例:
2有2一个(因为1不算),20有2*10,2*2*5,4*5,20,4种。

// 分解因数
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;
vector<int> F;
LL dfs (int k, int a){if (a == 1) return 1; //如果a = 1了是不是就找到一种方案了LL ans = 0;for (int i = k, sz = F.size(); i < sz; i++)if (a % F[i] == 0) ans += dfs(i, a / F[i]); //递归求解return ans;
}
int main() {int n;scanf("%d", &n);for (int i = 0, a; i < n; i++){cin >> a, F.clear(); // 输入,并清空for (int j = 2; j <= a; j++)if (a % j == 0) F.push_back(j);// 因数printf ("%lld\n", dfs (0, a));}return 0; 
}

 公交换乘

 

这里样例解释,和思路都有了,我们就设置一个结构体,把时间,花费,和是公交车还是地铁,存起来。

代码如下:

// 公交换乘
#include <bits/stdc++.h>
using namespace std;
struct Item {int a;            // 0代表地铁,1代表公交车int price, time;  // 票价, 时间
};
int main() {ios::sync_with_stdio(false), cin.tie(0);int n;cin >> n;Item it;list<Item> s;  // 地铁票,按照时间递增排序, 相当于队列,底层是双向链表int ans = 0;for (int i = 0; i < n; i++) {cin >> it.a >> it.price >> it.time;  // 输入一条新的记录if (it.a == 0) {                     // 地铁ans += it.price, s.push_back(it);continue;}                    // 下面考虑公交auto p = s.begin();  // 过期的地铁票要全部删除while (p != end(s) && it.time - p->time > 45) p = s.erase(p);while (p != end(s) && p->price < it.price) p++;  // 跳过金额不够的优惠券if (p != end(s))  // p就指向一张优惠券,可以乘车的s.erase(p);  // 用一张优惠票乘车并且删除(链表可以在中间删除)elseans += it.price;  // 只能掏钱了}printf("%d\n", ans);return 0;
}

最后一个题:

 Vacation

题目够简单了吧。

这里涉及了一个知识点:

max(a , b)这是不是原来的写法,我可以改成这样:max({a,b,c,d,e,f··········})。自己玩儿一下。

 

// Vacation
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main() {ios::sync_with_stdio(false), cin.tie(0);int n;cin >> n;vector<vector<LL>> D(n + 1, vector<LL>(3, 0));// D[i,j]: 第i天活动为j,[1...i]天对应的答案for (int i = 1; i <= n; i++)for (int j = 0, a; j < 3; j++) {  // 第i天为活动为jcin >> a;for (int lj = 0; lj < 3; lj++)  // 第i-1天为ljif (lj != j) D[i][j] = max(D[i][j], D[i - 1][lj] + a);}return printf("%lld\n", max({D[n][0], D[n][1], D[n][2]})), 0;
}

谢谢大家观看。

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

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

相关文章

【蓝桥杯单片机记录】IO基础与LED控制

目录 一、IO基础 1.1 IAP15F2K61S2芯片原理图 1.2不同工作模式 二、新建工程的一些补充 2.1 keil中没有IAP15F2K61S2的头文件 解决&#xff1a;在isp软件中找到如下​编辑 2.2keil中的芯片选择 2.3推荐字体 三、sbit关键字 四、LED控制 4.1原理图 4.2不能直接通过IO…

宋小黑原创高清壁纸分享之蓝白云海

大家好&#xff0c;我是小黑&#xff0c;最近迷上了制作壁纸&#xff0c;哈哈&#xff0c;给大家分享一波&#xff0c;小黑做的美图~ 本期给大家分享的是&#xff0c;小黑原创的蓝白云海主题系统壁纸~ 厌倦了一成不变的壁纸吗&#xff1f; 感到学习负担过重吗&#xff1f; …

机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节)

机器人学、机器视觉与控制 上机笔记&#xff08;第一版译文版 2.1章节&#xff09; 1、前言2、本篇内容3、代码记录3.1、新建se23.2、生成坐标系3.3、将T1表示的变换绘制3.4、完整绘制代码3.5、获取点*在坐标系1下的表示3.6、相对坐标获取完整代码 4、结语 1、前言 工作需要&a…

【cmu15445c++入门】(7)C++ auto 关键字

一、auto关键字介绍 C auto 关键字是一个关键字&#xff0c;它告诉编译器通过其初始化表达式推断声明变量的类型。它可以提高开发人员的效率&#xff08;开发人员不再需要输入冗长、不守规矩的类型名称&#xff09;。它在 for-each 循环的上下文中也很有用。但是&#xff0c;使…

Ubuntu 22 部署Zabbix 6.4

一、安装及配置postgresql sudo apt-get update sudo apt-get install postgresql postgresql-client 修改配置文件&#xff0c;配置远程访问&#xff1a;&#xff08;PostgreSQL安装路径下的data&#xff0c;也是安装时data的默认路径&#xff09;data目录下的 pg_hba.conf …

CTFshow web(php命令执行 45-49)

基础知识&#xff1a; 1.绕过cat使用&#xff1a; tac more less head tac tail nl od(二进制查看) vi vim sort uniq rev 2.绕过空格用&#xff1a; %09 <> ${IFS} $IFS$ {cat,fl*} %20 注&#xff1a; %09 ##&#xff08;Tab&#xff09; %20 ##&#xff08;spa…

“智能检测,精准把控。温湿度检测系统,为您的生活带来全方位的健康保障。”#非标协议项目【上】

“智能检测&#xff0c;精准把控。温湿度检测系统&#xff0c;为您的生活带来全方位的健康保障。”#非标协议项目【上】 前言预备知识1温湿度检测系统需求2.代码整合2.1找到编程实现LCD1602显示一行工程&#xff0c;打开代码文件&#xff0c;将所需的LCD1602驱动代码拷贝到温湿…

FastDFS 分布式集群搭建详解

文章目录 前言1、整体架构2、安装配置FastDFS集群2.1 配置tracker2.2 配置storage 3、启动集群4、查看集群情况5、nginx配置5.1 配置storage的四台机器的nginx5.2 配置tracker的两台机器的nginx5.3 配置统一入口 前言 阅读本文章之前请先看上一篇单机版FastDFS安装配置详解&am…

【工作学习 day04】 9. uniapp 页面和组件的生命周期

问题描述 uniapp常用的有&#xff1a;页面和组件&#xff0c;并且页面和组件各自有各自的生命周期函数&#xff0c;那么在页面/组件请求数据时&#xff0c;是用created呢&#xff0c;还是用onLoad呢&#xff1f; 先说结论: 组件使用组件的生命周期&#xff0c;页面使用页面的…

机器学习 | 深入集成学习的精髓及实战技巧挑战

目录 xgboost算法简介 泰坦尼克号乘客生存预测(实操) lightGBM算法简介 《绝地求生》玩家排名预测(实操) xgboost算法简介 XGBoost全名叫极端梯度提升树&#xff0c;XGBoost是集成学习方法的王牌&#xff0c;在Kaggle数据挖掘比赛中&#xff0c;大部分获胜者用了XGBoost。…

Netty源码系列 之 ChannelPipeline IO处理回顾 源码

目录 ChannelPipeline【包含AbstractUnsafe.write的源码流程&#xff0c;比之前更加深化了&#xff0c;必看】 ChannelPipeline概念回顾 ChannelPipeline的创建 Inbound(输入Handler)所对应的事件传播 Outbound(输出Handler)所对应的事件传播【包含AbstractUnsafe.write的…

Flink CDC 与 Kafka 集成:Snapshot 还是 Changelog?Upsert Kafka 还是 Kafka?

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维…