备战蓝桥杯---数据结构与STL应用(进阶1)

news2025/7/18 17:26:25

让我们先来看一看map的基础应用吧:

下面是实现代码:

#include<bits/stdc++.h>
using namespace std;
typedef map<int,multiset<int> > line;
map<int,multiset<int> >mx;
map<int,multiset<int> >my;
int n,m;
int deal(line &x,line &y,int pos){
	int ans=x[pos].size();
	multiset<int>::iterator it;//相当于指针 
	for(it=x[pos].begin();it!=x[pos].end();it++){
		y[*it].erase(pos);
	}
	x[pos].clear();
	return ans;
}
int main(){
	while(scanf("%d%d",&n,&m)!=EOF){
		if(n==0&&m==0) break;
		mx.clear();
		my.clear();
		int ans;
		for(int i=0;i<n;i++){
			int x,y;
			scanf("%d%d",&x,&y);
			mx[x].insert(y);
			my[y].insert(x);
		}
		for(int i=0;i<m;i++){
			int x,y;
			scanf("%d%d",&x,&y);
			if(x==0) ans=deal(mx,my,y);//利用传引用,直接吧形式参数作为实际参数的别名 
			else ans=deal(my,mx,y);
			cout<<ans<<endl;
		}
	}
}

接下来看看map的应用:

很显然,我们先按任务的X排序(因为x起决定作用),然后从大到小按照能选就选的贪心,一方面,这保证钱最多,另为保证强对强,匹配数最多。当两个都可以时,用二分找最近任务y的值,于是用map的二叉搜索树即可。下面是AC代码:

#include<bits/stdc++.h>
#include<stdio.h>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <math.h>
#include <cstdlib>
#include <queue>
#include<string.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include<map>
using namespace std;
#define int long long
int n,m;
struct node{
	int x,y;
}t[100010],b[100010]; 
bool cmp(node a,node b){
	if(a.x==b.x) return a.y>b.y;
	else return a.x>b.x;
}
signed main(){
	while(cin>>n>>m){
	for(int i=1;i<=n;i++) scanf("%d%d",&b[i].x,&b[i].y);
	for(int i=1;i<=m;i++) scanf("%d%d",&t[i].x,&t[i].y);
	sort(t+1,t+m+1,cmp);
	sort(b+1,b+n+1,cmp);
	map<int,int> mp;
	int j=1,cnt=0,sum=0;
	for(int i=1;i<=m;i++){
		while(b[j].x>=t[i].x&&j<=n){
			if(mp.count(b[j].y)==0) mp[b[j].y]=1;
			else mp[b[j].y]++;
			j++;
		}
		if(!mp.empty()){
		map<int,int>::iterator it=mp.lower_bound(t[i].y);//不存在返回mp.end()
		if(mp.end()==it) continue;
		cnt++;
		sum+=500*t[i].x+2*t[i].y;
		mp[it->first]--;//访问键值
		if(mp[it->first]==0) mp.erase(it->first);
		}		
	}
	cout<<cnt<<" "<<sum<<endl;}
return 0;
}

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

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

相关文章

2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码

2024美国大学生数学建模E题财产保险的可持续模型详解思路具体代码 前言 很快啊&#xff01;啪的一下拿到题目就开始做题&#xff01;简单介绍一下我自己&#xff1a;博主专注建模五年&#xff0c;参与过大大小小数十来次数学建模&#xff0c;理解各类模型原理以及每种模型的建…

Spring Boot--08--Mybatis 之Mapper在IDEA中自动注入警告的解决方案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 问题原因 解决方案方法1&#xff1a;为 Autowired 注解设置required false方法2&#xff1a;用 Resource 替换 Autowired方法3&#xff1a;在Mapper接口上加上Repo…

C语言实现12种排序算法

1.冒泡排序 思路&#xff1a;比较相邻的两个数字&#xff0c;如果前一个数字大&#xff0c;那么就交换两个数字&#xff0c;直到有序。 时间复杂度&#xff1a;O(n^2)&#xff0c;稳定性&#xff1a;这是一种稳定的算法。 代码实现&#xff1a; void bubble_sort(int arr[],…

java-JUC并发编程学习笔记03(尚硅谷)

线程间通信 例子&#xff1a; 对一个值1 -1交替完成&#xff0c;a的值就是1 b的值就是0 这个过程就是线程间通信 Synchronized实现&#xff1a; 虚假唤醒问题&#xff1a; 我们再添加两个线程。 我们发现我们的结果就不对了。 我们只需要使用while即可。 我们线程通信的最后一…

【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(完结)

从高层设计的角度去探讨框架需要关注的问题。 参考&#xff1a;速读《Vue.js 设计与实现》 - 掘金 (juejin.cn) 系列目录&#xff1a; 标题博客第一篇&#xff1a;框架设计概览【Vue.js设计与实现】第一篇&#xff1a;框架设计概览-阅读笔记第二篇&#xff1a;响应系统【Vue.…

blender 画笔的衰成曲线Falloff Curve

Blender画笔是用来在雕刻模式或绘画模式下对物体进行修改的工具。画笔有不同的类型和设置&#xff0c;可以影响画笔的效果和外观。你提到的选项是画笔的衰减曲线&#xff08;Falloff Curve&#xff09;的预设&#xff0c;它们决定了画笔的强度如何随着距离中心的距离而变化。 …

32OLED中断系统&对射式红外计数&旋转编码计数

目录 一.程序调试方式 二.OLED简介 三. 中断系统 四.代码实现 (1)对射式红外计数 &#xff08;2&#xff09;旋转编码计数 一.程序调试方式 二.OLED简介 stm32引脚上电后&#xff0c;如果不初始化&#xff0c;默认是浮空输入的模式&#xff0c;在这个模式下引脚不会输出电平…

免费版XShell7下载安装

1.下载地址 家庭/学校免费 - NetSarang Websitehttps://www.xshell.com/zh/free-for-home-school/ 不同时期下载&#xff0c;版本会有不同&#xff0c;实时下载即可。 2.安装 Xshell和Xftp都要安装&#xff0c;点击下一步&#xff0c;直至安装完成。 3.邮箱注册&#xff0c;免…

Redis核心技术与实战【学习笔记】 - 16.Redis 缓存异常:缓存和数据库不一致

概述 只要使用 Redis 缓存&#xff0c;就必须面对缓存和数据库的一致性问题。 重要的是&#xff0c;如果数据不一致&#xff0c;那么业务应用从缓存中读取的数据就不是最新数据&#xff0c;这会导致严重的问题。比如说&#xff0c;我们把电商商品的库存信息缓存在 Redis 中&am…

【网站项目】065健康综合咨询问诊平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Python入门到精通(七)——Python文件操作

Python文件操作 一、文件的编码 二、文件的读取 1、操作汇总 2、model 常用的三种基础访问模式 三、文件的写入 四、文件的追加 五、综合案例 一、文件的编码 1、什么是编码&#xff1f; 编码就是一种规则集合&#xff0c;记录了内容和二进制间进行相互转换的逻辑。编…

合约短线高胜率策略-扭转乾坤指标使用说明

扭转乾坤指标使用说明 行情判断 双绿线 多趋势双红线 空趋势大绿线 小红线 多震荡大红线 小绿线 空震荡 进场条件 趋势行情进场 多趋势 多信号 底金叉 做多空趋势 空信号 顶死叉 做空 震荡行情进场 多震荡 多信号 底金叉 做多多震荡 空信号 顶死叉 做空空…

带你玩转股票的价值投资,上市公司典型案例分析

一、教程描述 上市企业&#xff0c;一般是新经济的典型代表&#xff0c;它的变化最能折射出新的商业模式及未来的产业机会。无论你是企业管理层、新兴创业者&#xff0c;还是职场精英及在校学生&#xff0c;都可以从上市公司的演变规律中&#xff0c;找到自己的职业晋升路径和…

LNMP环境搭建动态网站

一、环境准备 服务器&#xff1a;openEuler 22.03 Linux IPV4 &#xff1a;192.168.110.144/24 网页服务器&#xff1a;Nginx1.21.0 数据库&#xff1a;MySQL 8.0.36 PHP&#xff1a;8.0.30 1.安装软件 [rootnode3 ~]# yum install php-mysqlnd php php-gd php-fpm php-xml -y…

运维SRE-02 正则表达式、grep

1.特殊符号补充 1.1位置相关的特殊符号 . 当前目录 .. 当前目录的上级目录 ~ 当前用户家目录 / 根目录 cd - 返回上次所在目录1.2熟练掌握 # 注释符号,root命令提示符 | 管道符号.1.3了解其他特殊符号 $ 取值(取出变量的值),普通用户的提示符 ! % ^ & * (){} [] ; ? \…

git使用以及工作中开发流程

Git是当前最先进、最主流的分布式版本控制系统&#xff0c;免费、开源。 主要概念&#xff1a; 基本流程&#xff1a; 命令&#xff1a; git commit -a # 省略了add到暂存区的步骤&#xff0c;直接提交工作区的修改内容到版本库&#xff0c;不包括新增的文件。git fetc…

Python之PySpark简单应用

文章目录 一、介绍1.准备工作2. 创建SparkSession对象&#xff1a;3. 读取数据&#xff1a;4. 数据处理与分析&#xff1a;5. 停止SparkSession&#xff1a; 二、示例1.读取解析csv数据2.解析计算序列数据map\flatmap 三、问题总结1.代码问题2.配置问题 一、介绍 PySpark是Apa…

【Linux-常用命令】Linux 常用命令大全

【Linux-常用命令】Linux 常用命令大全 1&#xff09;文件管理1.1.目录操作1.2.vim 操作1.3.打包压缩相关命令1.4.Linux 管道1.5.Linux 远程拷贝命令1.6.查看文件目录大小 2&#xff09;文件权限管理2.1.三种基本权限2.2.更改权限 3&#xff09;运行程序3.1.命令行运行3.2.后台…

睿尔曼超轻量仿人机械臂—外置按钮盒使用说明

睿尔曼RM系列机械臂的控制方式有很多种&#xff0c;包括&#xff1a;示教器、JSON、API等。在此为大家介绍外置按钮盒的使用方法。 按钮盒接线安装 按钮盒外观如下图所示&#xff0c;有&#xff1a;急停、暂停、开始、继续。四个功能按钮。用户可通过这四个按钮来实现对机械臂运…

FileGDB文件地理数据库的大小和名称限制

FileGDB文件地理数据库的大小和名称限制 官方链接 文件地理数据库的大小和名称限制如下&#xff1a; 文件地理数据库的大小 - 无限制 表或要素类大小 - 1 TB&#xff08;默认值&#xff09;、4 GB 或 256 TB&#xff08;带关键字&#xff09; 要素类和表的数量 - 2,147,483,6…