贪心(不相交的开区间、区间选点、带前导的拼接最小数问题)

news2024/11/26 18:36:03

目录

1.简单贪心

2.区间贪心

不相交的开区间

1.如何删除?

2.如何比较大小

区间选点问题

3.拼接最小数 


1.简单贪心

比如:给你一堆数,你来构成最大的几位数

2.区间贪心

不相交的开区间

 思路:

首先,如果有两个区间包含关系,肯定是取小的那个,扔掉大的那个。

上一步操作完了之后,区间就互不包含,于是,每次都在保证不相交的前提下,

取左端点最大的(或每次都取右端点最小的)

思路是这样没错,实现遇到的问题:

1.如何删除?

 看了参考代码,不用删除,因为如果取左端点最大的,必定是被包含的那个区间,第二部包含了第一步,“首先”可以不干。

2.如何比较大小

需要回忆之前学的“排序”,构造结构体,构造cmp函数

通过代码

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=10002;
int n=2,W=2;
int l[N]={1,2},r[N]={5,6};

int ans=0;
struct qj
{
	int left;int right;
}I[N];
bool cmp(qj a1,qj a2)
{
	if(a1.left!=a2.left) return a1.left>a2.left;
	else return a1.right<a2.right;
}

int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){scanf("%d %d",&I[i].left,&I[i].right);}
sort(I,I+n,cmp);
if(n>0) ans++;
int l1=I[0].left;
for(int i=1;i<n;i++)
{
	if(I[i].right<=l1)
	{
		ans++;
		l1=I[i].left;
	}
}
printf("%d",ans);
}

区间选点问题

其实就是:不相交的闭区间

点=列举出的所有不相交的闭区间的左端点 

真的只改了一个小于号

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=10002;
int n=2,W=2;
int l[N]={1,2},r[N]={5,6};

int ans=0;
struct qj
{
	int left;int right;
}I[N];
bool cmp(qj a1,qj a2)
{
	if(a1.left!=a2.left) return a1.left>a2.left;
	else return a1.right<a2.right;
}

int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){scanf("%d %d",&I[i].left,&I[i].right);}
sort(I,I+n,cmp);
if(n>0) ans++;
int l1=I[0].left;
for(int i=1;i<n;i++)
{
	if(I[i].right<l1)
	{
		ans++;
		l1=I[i].left;
	}
}
printf("%d",ans);
}

3.拼接最小数 

仔细看例子

思路

问题:如何接收这些输入?并转化为实体? 

不能以%d输入,会丢失信息

 答案使用了string类(c++类别),使用cincout

string数组,每一个元素都是string

答案使用了自己构造cmp

if a+b<b+a,则a排b前,让sort自己排序

输出要注意00 000的情况,输出且只输出一个0

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=10002;
int n; 
string str[N];
bool cmp(string a,string b)
{return a+b<b+a;
}
int main()
{
//	string a="123";
//	cout<<(a[0]=="1");//"1"报错,'1'true,1false 
	cin>>n;
	int flag=0;
	for(int i=0;i<n;i++)cin>>str[i];
	sort(str,str+n,cmp);
	for(int j=0;j<n;j++)
{
		for(int i=0;i<str[j].length();i++) 
	
	{	if(str[j][i]!='0') flag=1;
	if(flag) cout<<str[j][i];

	}

	}	
if(!flag) cout<<0;
}

答案是这样的,从while开始看,用了高端的begin与erase 

bool cmp(string a, string b) {
    return a + b < b + a;
}

int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> nums[i];
    }
    sort(nums, nums + n, cmp);
    string result = "";
    for (int i = 0; i < n; i++) {
        result += nums[i];
    }
    while (result.length() > 1 && result[0] == '0') {
        result.erase(result.begin());
    }
    cout << result << endl;
    return 0;
}

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

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

相关文章

vue-router 源码分析——2. router-link 组件是如何实现导航的

这是对vue-router 3 版本的源码分析。 本次分析会按以下方法进行&#xff1a; 按官网的使用文档顺序&#xff0c;围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码&#xff0c;更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升&#xff0c;甚至面试时…

VL830 USB4 最高支持40Gbps芯片功能阐述以及原理图分享

前文斥巨资拆了一个扩展坞供大家参考。其中核心即为本文要说的这个VL830,USB4的HUB芯片。 拆解报告传送门&#xff1a;USB4 Gen3x2 最高40Gbps传输速率的HUB扩展坞拆解分析 OK&#xff0c;闲话少叙。直接进入主题&#xff0c;我就直接翻译规格书了。 VL830是一款USB4端点设备…

Java学习54-关键字this的使用

this是什么 this的作用&#xff1a; 它在方法(准确的说是实例方法或非static的方法)内部使用&#xff0c;表示调用该方法的对象 它在构造器内部使用&#xff0c;表示该构造器正在初始化的对象 this可以调用的结构&#xff1a;成员变量、方法和构造器 什么时候使用this 实…

深度学习:如何静悄悄地改变我们的日常生活

深度学习 深度学习&#xff1a;如何静悄悄地改变我们的日常生活一、消费电子产品智能手机与个人助理娱乐与社交媒体 二、医疗健康三、汽车与交通四、公共安全五、总结 深度学习&#xff1a;如何静悄悄地改变我们的日常生活 在近年来&#xff0c;深度学习技术因其强大的数据处理…

fmsh:1 memorytest测试内存工程使用说明

1、如何导出 从procise中导出内存测试工程&#xff1a;memtest 点击ok按钮导出memtest工程成功。 2、引导iar启动&#xff0c;进入工程 1&#xff09;确保已经关联了iar工具 2&#xff09;启动iar 工程目录如下&#xff1a; 3、修改内存测试大小 4、压力测试下&#xff…

OS复习笔记ch7-3

承接上文我们讲完了页式管理和段式管理&#xff0c;接下来让我们深入讲解一下快表和二级页表 快表 快表和计算机组成原理讲的Cache原理如出一辙。为了减少访存的次数&#xff0c;OS在访问页面的时候创建了快表&#xff08;Translation Lookaside Buffer &#xff0c;简称TLB&…

大数据湖一体化平台整体建设方案(PPT原件)

背 景&#xff1a;大数据湖的发展背景与建设理念 体 系&#xff1a;大数据湖体系规划与建设思路 生态圈&#xff1a;探索新兴业务入湖建设模式 共 享&#xff1a;大数据湖统一访问共享规划 运 营&#xff1a;大数据湖一体化运营管理建设 软件全套资料部分文档清单&…

centos7 安装 mysql5.7 LTS

centos7 安装 mysql5.7 LTS 参考&#xff1a; https://blog.csdn.net/EB_NUM/article/details/105425622 可以在运行安装程序之前导入密钥&#xff1a; sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022第一步、下载MySQL 安装包&#xff1a; sudo wget h…

Vue第三方库与插件实战手册

title: Vue第三方库与插件实战手册 date: 2024/6/8 updated: 2024/6/8 excerpt: 这篇文章介绍了如何在Vue框架中实现数据的高效验证与处理&#xff0c;以及如何集成ECharts、D3.js、Chart.js等图表库优化数据可视化效果。同时&#xff0c;探讨了Progressive Web App(PWA)的接入…

【传知代码】DETR[端到端目标检测](论文复现)

前言&#xff1a;想象一下&#xff0c;当自动驾驶汽车行驶在繁忙的街道上&#xff0c;DETR能够实时识别出道路上的行人、车辆、交通标志等目标&#xff0c;并准确预测出它们的位置和轨迹。这对于提高自动驾驶的安全性、减少交通事故具有重要意义。同样&#xff0c;在安防监控、…

【Python】解决Python报错:KeyError: ‘username‘

​​​​ 文章目录 引言1. 错误详解2. 常见的出错场景2.1 用户输入处理错误2.2 动态数据源 3. 解决方案3.1 使用 get() 方法3.2 检查键是否存在 4. 预防措施4.1 数据验证4.2 使用默认字典 (defaultdict) 结语 引言 在Python开发中&#xff0c;处理字典时遇到 KeyError 是一种…

pikachu靶场全流程

目录​​​​​​​ 暴力破解&#xff1a; 1.基于表单的暴力破解&#xff1a; 2.验证码绕过(on server)&#xff1a; 3.验证码绕过(on client)&#xff1a; token防爆破&#xff1a; XSS&#xff1a; 1.反射型xss(get)&#xff1a; 2.反射性xss(post)&#xff1a; 3.存…

html页面上点击图片放大

需求&#xff1a; 我这里是搭配wangeditor插件使用&#xff0c;然后用直接拿到wangeditor输入的内容用dangerouslySetInnerHTML直接渲染的html页面&#xff0c;页面的代码里面并没有<p><p/><img />这类标签 dangerouslySetInnerHTML渲染如下所示&#xff1a…

mqtt-emqx:简单安装emqx

安装依赖 yum install -y epel-release libatomic下载 cd /chz/install/emqx wget https://www.emqx.com/en/downloads/broker/5.7.0/emqx-5.7.0-el7-amd64.tar.gz解压 mkdir -p emqx && tar -zxvf emqx-5.7.0-el7-amd64.tar.gz -C emqx后台运行 cd /chz/install/e…

STM32F103C8开发板 STM32最小系统核心板 AD硬件原理图+PCB封装文件分享

STM32F103C8开发板原理图 原理图和PCB下载地址&#xff1a; STM32F103C8开发板 STM32最小系统核心板 AD硬件原理图PCB封装文件.zip: https://url83.ctfile.com/f/45573183-1269573020-8f85b2?p7526 (访问密码: 7526)

【Vue】mutations

文章目录 一、定义mutations二、组件中提交 mutations三、带参数的 mutations 一、定义mutations mutations是vuex中的对象&#xff0c;这个对象可以定义在当前store的配置项中 const store new Vuex.Store({state: {count: 0},// 定义mutations// mutations是一个对象&#x…

小阿轩yx-iptables 防火墙

小阿轩yx-iptables 防火墙 Linux 防火墙基础 体系主要工作在 网络层针对TCP/IP 数据包实施过滤和限制 属于典型的包过滤防火墙&#xff08;或者称为网络层防火墙&#xff09; 体系基于内核编码实现 好处 具有非常稳定的性能高效率 防火墙两个表示 netfilteriptables …

IPD推行成功的核心要素(七)如何利用DSTE拉通产品战略与策略?

如果说许多企业以往的管理变革重在重塑创新价值流、营销价值流、供应链价值流、人力资源价值链等&#xff0c;那么&#xff0c;DSTE管理变革重塑的就是企业的“领导价值流”。从而使企业&#xff0c;在未来白热化的竞争中处于领导地位&#xff0c;在无序中给企业一个方向&#…

用幻灯片讲解内存分配器Allocator

用幻灯片讲解内存分配器Allocators Allocators 分配器 提供内存分配策略的通用接口委托给 C 运行时&#xff1a;new / delete块内存池不同大小的块内存池 为什么用分配器? 将容器逻辑与内存分配策略解耦速度&#xff1a;内存分配速度慢确保有足够的内存可用确保所需的内…

Large-Scale LiDAR Consistent Mapping usingHierarchical LiDAR Bundle Adjustment

1. 代码地址 GitHub - hku-mars/HBA: [RAL 2023] A globally consistent LiDAR map optimization module 2. 摘要 重建精确一致的大规模激光雷达点云地图对于机器人应用至关重要。现有的基于位姿图优化的解决方案&#xff0c;尽管它在时间方面是有效的&#xff0c;但不能直接…