算法刷题day14
目录
- 引言
- 一、平均
- 二、三国游戏
- 三、松散子序列
引言
今天做了三道新题,类型是贪心、枚举、DP,不是特别难,但是努力一下刚好能够够得上,还是不错的,只要能够一直坚持下去,不断刷题不断总结,就是记忆力和毅力了,加油!
一、平均
标签:贪心
思路:贪心这种题目只能是见过类似的,然后去变种,一般比赛中是不太可能去现推出来的,这里只讲一下解题思路。这个变数只有四种情况,多变多、多变少、少变多、少变少。
1.多变多:多的给多的,那么一个变少了一个变多了,变多了的肯定又要变成少的,所以相当于第一步就多余了,反而代价多了
2.少变多:少的变多的,那么肯定会有一个多的变成少的,那么就要多变,相当于第一步也就多余了
3.少变少:其中的一个少的变少了,肯定会有一个多的变成这个少的,所以第一步也多余了
所以说只能是多的变少的,由于n的数量刚好,所以多余的部分肯定是会变的,要求又得是代价最少,那么就把多余的代价少的那部分变了就行了。
题目描述:
有一个长度为 n 的数组(n 是 10 的倍数),每个数 ai都是区间 [0,9] 中的整数。小明发现数组里每种数出现的次数不太平均,而更改第 i 个数的代价为 bi,他想更改若干个数的值使得这 10 种数出现的次数相等
(都等于 n10),请问代价和最少为多少。输入格式
输入的第一行包含一个正整数 n。接下来 n 行,第 i 行包含两个整数 ai,bi,用一个空格分隔。输出格式
输出一行包含一个正整数表示答案。数据范围
对于 20% 的评测用例,n≤1000;
对于所有评测用例,n≤105,0<bi≤2×105。输入样例:
10
1 1
1 2
1 3
2 4
2 5
2 6
3 7
3 8
3 9
4 10
输出样例:
27
样例解释
只更改第 1,2,4,5,7,8 个数,需要花费代价 1+2+4+5+7+8=27。
示例代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>using namespace std;typedef long long LL;const int N = 1e5+10;int n;
vector<int> arr[10];int main()
{ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);cin >> n;for(int i = 0; i < n; ++i){int a, b;cin >> a >> b;arr[a].push_back(b);}LL res = 0, ave = n / 10;for(int i = 0; i < 10; ++i){if(arr[i].size() > ave){sort(arr[i].begin(), arr[i].end());for(int j = 0; j < arr[i].size() - ave; ++j) res += arr[i][j];}}cout << res << endl;return 0;
}
二、三国游戏
标签:枚举
思路:这道题只有三种情况胜出,然后在这其中, x i > y i + z i , i ∈ ( 1 , n ) 当中任选多个 x_i>y_i+z_i,i\in(1,n)当中任选多个 xi>yi+zi,i∈(1,n)当中任选多个,即 x i − y i − z i > 0 , i ∈ ( 1 , n ) 当中任选多个 x_i-y_i-z_i>0,i\in(1,n)当中任选多个 xi−yi−zi>0,i∈(1,n)当中任选多个,可以规定一个 w i w_i wi来表示左半边,也就是有多个 w i w_i wi问最多能选多少个使得它们的和大于0,我们可以把这些 w i w_i wi由大到小排序,然后到了边界条件判断一下就可以了。最后结果从三个国家胜出的最大结果中选最大的就行了。
题目描述:
小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X,Y,Z(一开始可以认为都为 0)。游戏有 n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X,Y,Z
增加 Ai,Bi,Ci。当游戏结束时 (所有事件的发生与否已经确定),如果 X,Y,Z 的其中一个大于另外两个之和,我们认为其获胜。例如,当 X>Y+Z 时,我们认为魏国获胜。小蓝想知道游戏结束时如果有其中一个国家获胜,最多发生了多少个事件?如果不存在任何能让某国获胜的情况,请输出 −1。输入格式
输入的第一行包含一个整数 n。第二行包含 n 个整数表示 Ai,相邻整数之间使用一个空格分隔。第三行包含 n 个整数表示 Bi,相邻整数之间使用一个空格分隔。第四行包含 n 个整数表示 Ci,相邻整数之间使用一个空格分隔。输出格式
输出一行包含一个整数表示答案。数据范围
对于 40% 的评测用例,n≤500;对于 70% 的评测用例,n≤5000;
对于所有评测用例,1≤n≤105,0≤Ai,Bi,Ci≤109。
注意,蓝桥杯官方给出的关于 Ai,Bi,Ci 的数据范围是 1≤Ai,Bi,Ci≤109,但是这与给出的输入样例相矛盾,因此予以纠正。输入样例:
3
1 2 2
2 3 2
1 0 7
输出样例:
2
样例解释
发生两个事件时,有两种不同的情况会出现获胜方。
发生 1,2 事件时蜀国获胜。
发生 1,3 事件时吴国获胜。
示例代码:
#include <cstdio>
#include <iostream>
#include <algorithm>using namespace std;typedef long long LL;const int N = 1e5+10;int n;
int a[N], b[N], c[N], w[N];LL work(int x[], int y[], int z[]) //x国家胜出
{for(int i = 0; i < n; ++i) w[i] = x[i] - y[i] - z[i];sort(w, w+n, greater<int>());LL sum = 0, res = -1;for(int i = 0; i < n; ++i){sum += w[i];if(sum > 0) res = i + 1;else break;}return res;
}int main()
{ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);cin >> n;for(int i = 0; i < n; ++i) cin >> a[i];for(int i = 0; i < n; ++i) cin >> b[i];for(int i = 0; i < n; ++i) cin >> c[i];LL res = max({work(a, b, c), work(b, a, c), work(c, a, b)});cout << res << endl;return 0;
}
三、松散子序列
标签:状态机DP
思路:这个题目的意思就是从一个字符串中选一段子序列,然后不能选相邻的,然后使得这个子序列的价值最大。这个跟那个小偷偷盗差不多,不能选相邻一家的。然后就是每个字符串有两个状态,选或者不选, f [ i ] [ 2 ] f[i][2] f[i][2]中分别表示前 i i i个字母中不选、选第 i i i个字母的最大价值,可以推导出方程来 f [ i ] [ 0 ] = m a x ( f [ i − 1 ] [ 0 ] , f [ i − 1 ] [ 1 ] ) , f[i][0]=max(f[i-1][0],f[i-1][1]), f[i][0]=max(f[i−1][0],f[i−1][1]), f [ i ] [ 1 ] = f [ i − 1 ] [ 0 ] + s t r [ i ] − ′ a ′ + 1 f[i][1]=f[i-1][0]+str[i]-\ 'a'\ +1 f[i][1]=f[i−1][0]+str[i]− ′a′ +1最后的结果就是从 f [ n ] [ 0 ] f[n][0] f[n][0]和 f [ n ] [ 1 ] f[n][1] f[n][1]中选一个最大的出来就行了。
题目描述:
给定一个仅含小写字母的字符串 s,假设 s 的一个子序列 t 的第 i 个字符对应了原字符串中的第 pi个字符。我们定义 s 的一个松散子序列为:对于 i>1 总是有 pi−pi−1≥2。设一个子序列的价值为其包含的每个字符的价值之和(a∼z 分别为 1∼26)。求 s 的松散子序列中的最大价值。输入格式
输入一行包含一个字符串 s。输出格式
输出一行包含一个整数表示答案。数据范围
对于 20% 的评测用例,|s|≤10;
对于 40% 的评测用例,|s|≤300;
对于 70% 的评测用例,|s|≤5000;
对于所有评测用例,1≤|s|≤106,字符串中仅包含小写字母。输入样例:
azaazaz
输出样例:
78
示例代码:
#include <cstdio>
#include <cstring>
#include <iostream>using namespace std;const int N = 1e6+10;int n;
char str[N];
int f[N][2];int main()
{scanf("%s", str+1);n = strlen(str+1);for(int i = 1; i <= n; ++i){f[i][0] = max(f[i-1][0], f[i-1][1]);f[i][1] = f[i-1][0] + str[i] - 'a' + 1;}cout << max(f[n][0], f[n][1]) << endl;return 0;
}
相关文章:
算法刷题day14
目录 引言一、平均二、三国游戏三、松散子序列 引言 今天做了三道新题,类型是贪心、枚举、DP,不是特别难,但是努力一下刚好能够够得上,还是不错的,只要能够一直坚持下去,不断刷题不断总结,就是…...
个性签名大全
只许一生浮世清欢愿我以孤独作为铠甲,自此不再受伤愿我是阳光,明媚而不忧伤我不敢太勇敢太执着太骄傲,我怕失去开始你是我的天使,最后你是我的唯一姐的霸气,无人能比,哥的傲气,无人能朋唯有万事…...
前端常用代码整理(不断更新中)— js,jquery篇(2)
目录 1.随机生成字符串 2.删除数组中重复元素 3.RGB到十六进制转换机制 4.打乱一个数组,重新组合 5.获取两个日期的时间间隔 (天数) 6.获取当天属于今年的第几天 7.截取字符串长度,超过部分显示为 ... 8.判断数组是否为空 9.英文句子首…...
普中51单片机学习(六)
点亮第一个LED LED相关知识 LED,即发光二极管,是一种半导体固体发光器件。工作原理为:LED的工作是有方向性的,只有当正级接到LED阳极,负极接到LED的阴极的时候才能工作,如果反接LED是不能正常工作的。其原理图如下 …...
visual studio注册码
最近在研究c/c 安装visual studio 需要注册 技术博客http://idea.coderyj.com/ 注册码 Visual Studio 2022(VS2022)激活码: Pro(专业版): TD244-P4NB7-YQ6XK-Y8MMM-YWV2J Enterprise(企业版): VHF9H-NXBBB-638P6-6JHC…...
Studio One 6.5下载安装激活图文教程
Studio One 6.5是由PreSonus公司打造一款功能强大的数字音乐创作软件,不仅为用户们提供了制作、混合、掌握和执行所有操作,还提供了简洁直观的主界面,因此使用起来也是十分的简单,就算是初学者也可以快速的上手使用起来࿰…...
Kubernetes(K8S)集群部署实战
目录 一、准备工作1.1、创建3台虚拟机1.1.1、下载虚拟机管理工具1.1.2、安装虚拟机管理工具1.1.3、下载虚Centos镜像1.1.4、创建台个虚拟机1.1.5、设置虚拟机网络环境 1.2、虚拟机基础配置(3台虚拟机进行相同处理)1.2.1、配置host1.2.2、关闭防火墙1.2.3…...
流畅的Python(十)-序列的修改、散列和切片
一、核心要义 以第九章定义的二维向量为基础,定义表示多为向量的Vector类。该类将支持如下功能: 1. 基本的序列协议 2. 适当的切片支持,且返回的是新Vector实例 3.综合各个元素的值计算散列值 4.格式化展示 二、代码示例 1、前情提要 …...
TCP/IP五层各层协议详解
TCP/IP协议栈是网络通信的基础,它由五层协议组成,分别是物理层、数据链路层、网络层、传输层和应用层。以下是对各层协议的详细解释: 1. 物理层(Physical Layer):该层负责传输比特流,主要定义传…...
MySQL 基础知识(九)之视图
目录 1 视图的介绍 2 视图算法 3 创建视图 4 查看视图结构 5 修改视图 6 删除视图 7 参考文档 1 视图的介绍 视图是一张并不存储数据的虚拟表,其本质是根据 SQL 语句动态查询数据库中的数据。数据库中只存放了视图的定义,通过 SQL 语句使用视图时…...
算法之力扣数青蛙
题目连接 文章目录 题目解析算法原理第一步第二步第三步第三步第四步指向o 代码讲解代码实现 题目解析 先给大家来讲解一下这个题目的意思吧,这个题目是说呢给你一个蛙叫的字符串让你去设计一个算法求出发出这种蛙叫最少需要几只青蛙。比如说第一个样例发出这种叫声…...
【后端高频面试题--Nginx篇】
🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 后端高频面试题--Nginx篇 往期精彩内容什么是Nginx?为什么要用Nginx?为…...
TiDB 在医疗保障信息平台的应用实践
文章介绍了 TiDB 在医疗保障信息平台中的应用。东软医保云应用管理平台通过与 TiDB 联合,成功满足了医疗保障业务中高并发、实时性和复杂查询的要求。在某地市医疗保障信息平台的实践中,TiDB 分布式数据库有效实现了在线交易和实时分析服务,日…...
支付交易——跨境交易
摘要 老王兢兢业业经营生意多年,一步步从小杂货店做到现在,成立大型贸易公司。在做大做强的过程中,老王觉得国内市场已经饱和,竞争处处是红海。老王留意海外很多年了,决定走出去,转向海外:将国外的商品引进…...
上位机图像处理和嵌入式模块部署(上位机主要功能)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前关于机器视觉方面,相关的软件很多。比如说商业化的halcon、vision pro、vision master,当然也可以用opencv、pytorch自…...
【前端工程化面试题】webpack的module、bundle、chunk分别指的是什么?
首先从语法方面 在配置文件中有 module 这个配置项,里面有 rules 选项用来配置各种 loader,还有其他各种选项,参考官网。bundle 和 chunk 在配置文件中是没有这个选项的,但是会出现在配置的值中。 module 模块 指单个文件…...
软件实例分享,家具生产出库管理系统软件教程
软件实例分享,家具生产出库管理系统软件教程 一、前言 以下软件程序教程以 佳易王家具行业生产出库管理系统软件V16.1为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 销售管理——产品状态查询变更,可以根据生产进度变更…...
[uniapp的页面传参]详细讲解uniapp中页面传参的传递方式和接受方式 使用案例 代码注释
目录 一、传递方式1. URL传参2. Storage传参3. Vuex传参4.api传参eventChannel 二、接受方式1. URL传参2. Storage传参3. Vuex传参4.api传参eventChannel 三、使用案例四.提醒 在uniapp中,页面传参是非常常见的需求。本文将详细讲解uniapp中页面传参的传递方式和接受…...
Python实现时间序列分析霍尔特季节性平滑模型(Holt算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 霍尔特季节性平滑模型是指数平滑技术的一种扩展形式,由E. S. Holt和P. R. Winters分别独立…...
Rokid Station 进fastboot
前一阵子手里的station开不开机了,反复重启,摸索出进fastboot的方法: 关机状态下同时按电源键下面的确认键(○键),指示灯会进入白色常亮状态,插入电脑会在设备管理器内显示DNL设备(…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
