贪心专题练习

 

牛牛学括号

题目要求

  • 每次操作必须删除一个左括号和一个右括号,且删除后序列仍需合法。
  • 合法的括号序列要求每个右括号之前必须有对应的左括号。

分析

输入的都是合法的括号,即左括号=右括号,可利用这一点去解题

注意:

  • 中间取模是必要的,防止计算过程中溢出。
  • 中间取模不影响结果正确性,因为模运算的性质保证了分步取模与最终取模等价。

代码

#include<bits/stdc++.h>
using namespace std;
int main(){string s;cin>>s;int c=0;long long ans=1;//记录方法总数,初始化答案为1int m=1e9+7; //模数,防止答案溢出for(int i=0;i<s.size();i++){if(s[i]=='(') c++;//记录当前左括号的数量else{ans*=c; //此时,遇到了右括号,说明不能继续往后遍历,要开始为左括号匹配了c--; //刚才遍历了几个左括号,就说明后面有几个右括号与之匹配ans%=m; //分段相乘,匹配完一个,左括号数量减一}}cout<<ans; //要在中间对ans取模,避免溢出return 0;
}

牛牛的朋友

题目要求

每只牛必须移动 X 个单位(向左或向右),目标是使移动后最左和最右牛的距离最小。

分析

牛群有两种移动方向(这里只分析最优策略)

  1. 同向移动
  2. 双向移动

对于双向移动,我们需要将牛群分成两部分:

  • 前 i-1 头牛:全部向右移动 +X
  • 后 n-i+1 头牛:全部向左移动 -X

我们需要计算这种分组下,移动后牛群的最左位置和最右位置。如图所示:

注意

并不是所有情况下 maxp-minp 都会比初始值 res 小,一般情况下分割成两部分双向移动最左端和最右端距离会更近,但有时同向移动比双向移动更近,通向移动后左右两端的距离不变,因此,在这里用初始时两端的距离来初始化res,如果采用分割的方式,会出现比res更小的值,则更新,否则就说明此时,同向更优,无需更新。

代码

#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;long long a[n];for(int i=0;i<n;i++) cin>>a[i];//存储牛位置int x;cin>>x;int max1=-1e8,min1=1e8;for(int i=0;i<n;i++){if(a[i]>max1)max1=a[i];//先求出牛初始位置的最大距离,目的是用来初始化res,同时包含if(a[i]<min1)min1=a[i];//同向移动的情况}int res=0;res=max1-min1;sort(a,a+n);// 枚举分割点i,将前i-1头牛向右移动,其余向左移动for(int i=1;i<n;i++){  //数组是从0开始索引,但要分割成两半部分,所以从1开始int max2=max(a[n-1]-x,a[i-1]+x);//求最右边两种情况的maxint min1=min(a[0]+x,a[i]-x);//求最左边两种情况的minif(res>max2-min1){res=max2-min1;//更新res}}cout<<res;return 0;
}

 

 

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

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

相关文章

屏幕分辨率修改工具 SwitchResX(Mac电脑)

苹果电脑屏幕分辨率修改工具&#xff0c;SwitchResX for Mac&#xff0c;可以为您提供控制显示器分辨率所需的工具和功能。 原文地址&#xff1a;屏幕分辨率修改工具 SwitchResX&#xff08;Mac电脑&#xff09;

【Java编程动手学】Java中的数组与集合

文章目录 一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问与修改元素1.2.3 数组遍历 1.3 二维数组1.3.1 声明与初始化1.3.2 访问与遍历 1.4 三维数组及更高维数组1.5 数组类(Arrays)1.5.1 常用方法 1.6 复制数组1.6.1 系统复制方法1.6.2 手动复制 二…

Linux在线安装docker

1.切换阿里云镜像源 备份原有 repo 文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载阿里云的 CentOS 7 repo 文件 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 清华 sudo…

第十五节:第四部分:特殊文件:XML的生成、约束(了解即可)

如何使用程序把数据写出到XML文件中去 什么是约束XML的书写(了解即可) DTD约束文档的使用(了解即可) schema约束文档的使用(了解即可) 代码&#xff1a;如何使用程序把数据写出到XML文件中去 package com.itheima.day2_xml;import java.io.BufferedWriter; import java.io.Fil…

cd-agent更换cd模型(自用)

需求&#xff1a;将12服务器上&#xff0c;原有的cd-agent&#xff08;目录为/home/xgq/agent&#xff09;&#xff0c;复制一份&#xff0c;重命名为/home/xgq/agent_lx。之前的推理流程是A B两张图输进去&#xff0c;通过clip模型进行领域分类&#xff0c;若是遥感领域就用ch…

微信小程序31~40

1.事件绑定和事件对象 小程序中绑定事件没有on 方式&#xff0c;也没有click,小程序中可以用bind方法&#xff0c;click事件也需要用tap事件来进行代替。 绑定事件分为两种&#xff1a; bind:事件名&#xff0c;eg: <view bind:tap"fnName"><view/>bind事…

二叉树题解——二叉树的直径【LeetCode】

543. 二叉树的直径 一、算法逻辑&#xff08;逐步通顺讲解每一步思路&#xff09; &#x1f3af; 问题目标&#xff1a; 求二叉树中任意两个节点之间的最长路径&#xff08;以边数计算&#xff09;。 ✅ 1️⃣ 初始化变量 ans 用于记录目前遍历过程中的最大直径&#xff08;…

Android开发 Android10及10+读取外部存储问题

前提 &#xff1a; 在做文件遍历时&#xff0c;有的文件在Android10无法访问&#xff0c;在注册清单下添加android:requestLegacyExternalStorage"true"后可正常访问&#xff0c;但一直不知道具体原因。 使用XXPermissions时读到Android10分区存储后才明白这里的逻辑…

IP地理定位技术综述:理论、方法与应用创新(三)

[1]刘学婷,台文鑫,周帆,等.IP地理定位技术综述:理论、方法与应用创新[J].通信学报,2025,46(04):33-48. 2 IP地理定位应用场景 基于 IP 地理定位技术的特性和多样化应用场景,本文将其主要应用分为地理定位服务、网络安全与优化、网络空间测绘3类,如图7所示。基于IP地理定位…

16-C#生成DLL与调用

C#生成DLL与调用 1.2.3.4.5.将DLL文件复制到DEBUG下6.7.8.private void button79_Click(object sender, EventArgs e) {ClassLibrary1.Class1 testnew ClassLibrary1.Class1();UInt16 aConvert.ToUInt16(textBox67.Text);UInt16 b Convert.ToUInt16(textBox68.Text);label90.T…

JSON解析工具哪家强?

一、研究背景与目的 在现代Java应用开发中&#xff0c;JSON数据格式的解析性能直接影响系统响应速度与吞吐量。当处理高并发请求或大规模数据转换时&#xff0c;解析工具的选择尤为关键。本文通过JMH&#xff08;Java Microbenchmark Harness&#xff09;基准测试框架&#xf…

Go语言动态数据访问实战

Go语言反射实战&#xff1a;动态访问商品数据中的复杂字段 前言 在电商或仓储管理系统中&#xff0c;商品信息结构复杂且经常变化。比如商品有基本属性&#xff08;ID、名称、类型&#xff09;&#xff0c;还有动态扩展属性&#xff08;规格、促销信息、库存详情等&#xff0…

[特殊字符] Excel 按月筛选 + 工作表复制 + 样式批量处理 —— Python 自动化大汇总

本教程展示如何使用 Python 的 openpyxl 实现&#xff1a; 多工作表遍历&#xff1a;自动查找每月物料表&#xff1b; 条件筛选&#xff1a;获取 G 列数量大于 1000 的记录&#xff1b; 生成汇总表&#xff1a;从模板复制页面并写入筛选结果&#xff1b; 统一样式&#xff1…

Text2SQL主流实现方案

目录 基于 Prompt Engineering 的方案 基于模型微调的方案 T5 模型结构 MIGA 基于RAG 的方案 参考 基于 Prompt Engineering 的方案 这类方案比较简单粗暴,就是通过精心设计的提示来引导 LLM 生成 SQL,一般包含下面这些做法: 1. 零样本提示:直接向 LLM 提供数据库…

有哪些开源的SSO框架?

SSO&#xff08;Single Sign-On&#xff09;是一种身份验证机制&#xff0c;允许用户通过一次登录访问多个相互信任的系统或应用&#xff0c;无需重复输入凭证。核心目标是提升用户体验和安全性&#xff0c;减少密码疲劳和管理成本。​一、常见开源SSO框架概览​开源SSO框架主要…

LoRA 问答微调与部署全流程:基于 LLaMA-Factory + DeepSeek + FastAPI 打造专属大模型

想快速掌握大模型落地实战&#xff1f;本文将手把手教你完成一个国产大模型的微调任务&#xff0c;并通过 FastAPI 向后端暴露接口。特别适合希望快速将大模型应用于实际业务的开发者。 &#x1f4cc; 本文为《LoRA 应用实录》系列第 3 篇&#xff0c;在第一篇里讲解了LoRA在 …

分布式部署下如何做接口防抖---使用分布式锁

防抖也即防重复提交&#xff0c;那么如何确定两次接口就是重复的呢&#xff1f;首先&#xff0c;我们需要给这两次接口的调用加一个时间间隔&#xff0c;大于这个时间间隔的一定不是重复提交&#xff1b;其次&#xff0c;两次请求提交的参数比对&#xff0c;不一定要全部参数&a…

【Java工程师面试全攻略】Day10:系统性能优化全链路实践

一、性能优化的多维视角 系统性能优化是区分普通开发者与高级工程师的关键能力指标。根据Google的研究&#xff0c;性能优化带来的用户体验改善可以直接转化为商业收益——页面加载时间每减少100ms&#xff0c;亚马逊的销售额就增加1%。今天我们将从全链路视角剖析性能优化的方…

在kotlin中如何更好的理解 高阶函数

在 Kotlin 中&#xff0c;高阶函数的本质是「将函数作为商品流通的交易模式」。 核心需求&#xff1a;传统函数只能操作数据&#xff08;如数字、字符串&#xff09;&#xff0c;但实际开发中常需复用逻辑流程&#xff08;如「先校验参数&#xff0c;再执行操作」的流程适用于…

15-C#的scottplot控件库绘制曲线图

C#的scottplot控件库绘制曲线图 1.使用Nuget 安装scottplot控件库2.绘制柱状图private void button54_Click(object sender, EventArgs e){double[] values { 5, 10, 7, 13, 22, 18, 33, 16 };formsPlot1.Plot.Add.Bars(values);formsPlot1.Refresh();}3.中文标题显示问题 for…