当前位置: 首页 > news >正文

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

本文将主要围绕有关map的今典应用展开:

下面我用图进行分析:

下面为AC代码:

#include<bits/stdc++.h>
using namespace std;
struct Point
{int x,y;bool operator < (const Point & r) const {return x < r.x || ( x == r.x && y < r.y );//升序排列}
};
multiset<Point> S;
int main()
{int T, kas = 0; scanf("%d",&T);while(T--){if(kas) puts("");int n;scanf("%d",&n);printf("Case #%d:\n",++kas);S.clear();while(n--){Point P;scanf("%d%d",&P.x,&P.y);auto it = S.lower_bound(P);if(it == S.begin() || (--it)->y > P.y){it = S.insert(P);while(it != S.end() && (it->x==P.x&&it->y==P.y)) it++;while(it != S.end() && it->y >= P.y) S.erase(it++);}printf("%d\n",S.size());}}return 0;
}

接题:

其实与上一章的task题类似,我们按敌方防御力从大到小,选择攻击力合适的,在其中,如果他们防御力均小于,我们选一个防御力min的去同归于尽,反之选一个最接近敌方攻击力的。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
struct node{int att,de;
}t[100010],e[100010];
int T,n,m,k;
bool cmp(node a,node b){return a.att>b.att;
}
bool cmp1(node a,node b){return a.de>b.de;
}
int main(){cin>>T;while(T--){if(k!=0) puts(" ");scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d%d",&t[i].att,&t[i].de);for(int i=1;i<=m;i++) scanf("%d%d",&e[i].att,&e[i].de);sort(t+1,t+n+1,cmp);sort(e+1,e+m+1,cmp1);int j=1,cnt=0,f=0;map<int,int> mp;for(int i=1;i<=m;i++){while(t[j].att>=e[i].de){if(mp.count(t[j].de)==0) mp[t[j].de]=1;else mp[t[j].de]++;j++;}if(mp.empty()){f=1;break;} map<int,int>::iterator it=mp.lower_bound(e[i].att);if(it==mp.end()||(--mp.end())->first<=e[i].att){cnt++;if(--mp[mp.begin()->first]==0) mp.erase(mp.begin()->first);}else{if(it->first==e[i].att){if(--mp[(++it)->first]==0) mp.erase(it->first);}else{if(--mp[(it)->first]==0) mp.erase(it->first);}}}if(f==0) printf("Case #%d: %d",++k,n-cnt);else printf("Case #%d: -1",++k);}
}

http://www.lryc.cn/news/295194.html

相关文章:

  • SpringBoot:多环境配置
  • input框中添加一个 X(关闭/清空按钮)
  • Unity3d Shader篇(三)— 片元半兰伯特着色器解析
  • 【vue3学习P5-P10】vue3语法;vue响应式实现
  • 相机图像质量研究(3)图像质量测试介绍
  • PaddleDetection学习5——使用Paddle-Lite在 Android 上实现实时的人脸检测(C++)
  • 全套电气自动化样例图纸分享,使用SuperWorks自动化版免费设计软件!
  • 带你实现用自己域名打开Tomcat
  • python coding with ChatGPT 打卡第18天| 二叉树:从中序与后序遍历序列构造二叉树、最大二叉树
  • java基础训练题(1)
  • 【自定义序列化器】⭐️通过继承JsonSerializer和实现WebMvcConfigurer类完成自定义序列化
  • 闲聊电脑(5)装个 Windows(一)
  • 力扣(leetcode)第414题第三大的数(Python)
  • 使用wda框架实现IOS自动化测试详解
  • LeetCode--代码详解 2.两数相加
  • 【Django开发】美多商城项目第3篇:用户注册和图片验证码开发(附代码,文档已分享)
  • 代码随想录算法训练营DAY10 | 栈与队列 (1)
  • flinkjar开发 自定义函数
  • Golang 学习(一)基础知识
  • C++学习:string的了解
  • Webpack源码浅析
  • Hadoop:HDFS学习巩固——基础习题及编程实战
  • SASS 官方文档速通
  • 《动手学深度学习(PyTorch版)》笔记7.4
  • 关于自动驾驶概念的学习和一些理解
  • C++ dfs搜索枚举(四十八)【第八篇】
  • 【优先级队列(大顶堆 小顶堆)】【遍历哈希表键值对】Leetcode 347 前K个高频元素
  • Java设计模式-模板方法模式(14)
  • 【C++ 二维前缀和】约会
  • 基于Springboot的社区疫情防控平台