Peter算法小课堂—自定义容器

news2025/1/12 6:11:27

太戈编程第308题

暴力法

cin>>n>>m;
for(int i=0;i<n;i++) cin>>name[i]>>year[i];
for(int i=0;i<m;i++){
	int x;
	string y;
	cin>>x>>y;
	int OK=0;
	for(int j=0;j<n;j++){
		if(name[j]==y&&year[j]==x){
			OK=1;
			break;
		}
	}
	cout<<OK<<" ";
}

这个算法复杂度为O(nm),显然有更快的算法

自定义类型

 但是,这样写有个很危险的错误,如下

#include <bits/stdc++.h>
using namespace std;
struct dog{
	string name;
	int year;
};
int main(){
	set<dog> s;
	dog a,b;
	a.name="mike";a.year=2020;
	b.name="wangcai";b.year=2019;
	s.insert(a);
	s.insert(b);
	return 0;
}

运行出来是这样的,

 原因很简单,因为set的功能是排序、去重,然而结构体排序要加上“.",所以会报错

改后代码,

#include <bits/stdc++.h>
using namespace std;
struct dog{
	string name;
	int year;
	bool operator<(const dog&d)const {
		if(year<d.year) return 1;
		if(year>d.year) return 0;
		if(name<d.name) return 1;
		return 0;
	}
};
int main(){
	set<dog> s;
	dog a,b;
	a.name="mike";a.year=2020;
	b.name="wangcai";b.year=2019;
	s.insert(a);
	s.insert(b);
	return 0;
}

那么,回到原题,代码该怎么写呢?

#include <bits/stdc++.h>
using namespace std;
struct dog{
	string name;
	int year;
	bool operator<(const dog&d)const {
		if(year<d.year) return 1;
		if(year>d.year) return 0;
		if(name<d.name) return 1;
		return 0;
	}
};
int main(){
	set<dog> s;
	dog d;
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>d.name>>d.year;
		s.insert(d);
	}
	for(int i=0;i<m;i++){
		cin>>d.year>>d.name;
		if(s.count(d)) cout<<"1";
		else cout<<"0";
	}
	return 0;
}

太戈编程第1497题

无set

#include <bits/stdc++.h>
using namespace std;
const int N=100009;
struct student{
	int id,score;
	bool operator<(const student&b)const {
		if(score>b.score) return 1;
		if(score<b.score) return 0;
		if(id<b.id) return 1;
		return 0;
	}
};
student f[N];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>f[i].score;
		f[i].id=i;
	}
	sort(f+1,f+1+n);
	for(int i=1;i<=n;i++){
		cout<<f[i].id<<" "<<f[i].score<<endl;
	}
	return 0;
}

有set

#include <bits/stdc++.h>
using namespace std;
const int N=100009;
struct student{
	int id,score;
	bool operator<(const student&b)const {
		if(score>b.score) return 1;
		if(score<b.score) return 0;
		if(id<b.id) return 1;
		return 0;
	}
};
int main(){
	int n;
	cin>>n;
	set<student> s;
	student x;
	for(int i=0;i<n;i++){
		cin>>x.score;
		x.id=i+1;
		s.insert(x);
	}
	set<student>::iterator it;
	for(it=s.begin();it!=s.end();it++)
		cout<<(*it).id<<" "<<(*it).score<<endl;
	return 0;
}

当然这个代码也有高级版,但要升级到c++14,如下

//不推荐使用,OJ好像不行
#include <bits/stdc++.h>
using namespace std;
const int N=100009;
struct student{
	int id,score;
	bool operator<(const student&b)const {
		if(score>b.score) return 1;
		if(score<b.score) return 0;
		if(id<b.id) return 1;
		return 0;
	}
};
int main(){
	int n;
	cin>>n;
	set<student> s;
	int x;
	for(int i=0;i<n;i++){
		cin>>x;
		s.insert({i+1,x});
	}
	set<student>::iterator it;
	for(it=s.begin();it!=s.end();it++)
		cout<<(*it).id<<" "<<(*it).score<<endl;
	return 0;
}

太戈编程第309题

大家认真敲代码15min,15min后开讲

 

#include <bits/stdc++.h>
using namespace std;
struct ren{
	int x,id;
	bool operator<(const ren&b)const{
		if(x<b.x) return 1;
		if(x>b.x) return 0;
		if(id<b.id) return 1;
		return 0;
	}
};
int main(){
	int n;
	cin>>n;
	set<ren> s;
	set<ren>::iterator it;
	ren d;
	for(int i=1;i<=n;i++){
		cin>>d.x;
		d.id=i;
		s.insert(d); 
	}
	set<int> ok;
	for(int i=1;i<=n;i++){
		it=s.begin();
		d.x=(*it).x+3;
		d.id=(*it).id;
		s.erase(it);
		s.insert(d);
		ok.insert(d.id);
	}
	cout<<n-ok.size()<<endl;
	return 0;
}

希望这些对大家有用,三联必回

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

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

相关文章

彭州市民政局“四个聚焦” 推动未成年人保护工作

聚焦机制完善。以“六大保护”为主导&#xff0c;聚焦“27&#xff08;市级部门&#xff09;13&#xff08;镇、街道&#xff09;”整体联动&#xff0c;定期开展信息交流会、跨部门协同工作培训会等活动&#xff0c;不断健全协调机制、完善协同体系&#xff0c;进一步提升全市…

springboot vue mysql的在线竞拍拍卖系统

基于SpringBoot的在线拍卖系统,springboot vue mysql (毕业论文10168字以上,共34页,程序代码,MySQL数据库) 【运行环境】 IDEA, JDK1.8, Mysql, Node, Vue 【技术栈】 Java, SpringBoot, Jquery, Layui, MYSQL, HTML, CSS, JAVASCRIPT, Ajax 7707 java毕业设计 springboot v…

进博会再现上亿大单 EZZ携手HIC海橙嗨选签署2024年度合作备忘录

正在举行的第六届中国国际进口博览会上&#xff0c;再现上亿大单。11月6日&#xff0c;在澳大利亚新南威尔士州政府代表的见证下&#xff0c;澳交所基因组龙头上市公司EZZ生命科学和中国跨境社交电商龙头HIC海橙嗨选签署2024合作备忘录&#xff0c;在未来的一年&#xff0c;EZZ…

vue 数字软键盘 插件 封装 可拖动

1、效果图 2、使用方式 <Keyboard v-if"show" close"show false" :inputDom"$refs.input" /> 封装的数字键盘 Keyboard.vue 组件代码 <template><divclass"keyboard"ref"keyboard":style"{ left: …

日本it培训班,如何选择靠谱的赴日IT培训班?

随着科技的发展&#xff0c;信息技术行业在全球范围内迅速发展&#xff0c;并呈现出蓬勃的发展态势&#xff0c;在日本&#xff0c;IT行业也成为一种极为热门的职业选择。日本专门学校在这个领域内培养了许多IT从业者&#xff0c;成为了众多IT公司的培养基地。如果你对IT产业感…

【前端异常】JavaScript错误处理:分析 Uncaught(in promise) error

这里写目录标题 一、Promise是什么二、什么是 Uncaught(in promise) error三、解决方案3.1 使用catch方法处理Promise的错误3.2 使用 async/await 处理Promise的错误3.3 全局异常处理 四、结论 在开发过程中&#xff0c;JavaScript的错误处理是一个老生常谈的话题。当应用程序发…

AI机器人软件定制流程

一、项目概述 AI机器人软件定制流程是根据客户的需求&#xff0c;定制开发一款具有人工智能功能的机器人软件。本方案将详细介绍AI机器人软件定制的整个流程&#xff0c;包括需求分析、设计、开发、测试和交付等环节。 二、需求分析 在定制AI机器人软件之前&#xff0c;需要…

Linux系统上配置MySQL自动备份

1、编写Shell脚本&#xff0c;并保存为.sh文件 #!/bin/bash# 获取当前日期和时间 current_date$(date %Y%m%d) current_time$(date %H%M%S)# 设置备份文件名 path"/usr/local/mysql5.7/bak" bakFileName"dbname_backup_${current_date}_${current_time}.sql&qu…

阿里云国际站:应用实时监控服务

文章目录 一、阿里云应用实时监控服务的概念 二、阿里云应用实时监控服务的优势 三、阿里云应用实时监控服务的功能 四、写在最后 一、阿里云应用实时监控服务的概念 应用实时监控服务 (Application Real-Time Monitoring Service) 作为一款云原生可观测产品平台&#xff…

React Native简介 说明为什么要学习React Native

首先 什么是 React Native &#xff1f; React Native 是 Facebook 在 React.js Conf 2015 上推出了开源框架 React Native (简称 RN)是 React 的一个原生 (Native) 扩展 它允许我们通过 React 语法&#xff0c;来开发ios 和Android 原生应用 简单说 由Facebook发布 是一种Re…

笔尖笔帽检测1:笔尖笔帽检测数据集(含下载链接)

笔尖笔帽检测1&#xff1a;笔尖笔帽检测数据集(含下载链接) 目录 笔尖笔帽检测1&#xff1a;笔尖笔帽检测数据集(含下载链接) 1. 前言 2. 手笔检测数据集 &#xff08;1&#xff09;Hand-voc1 &#xff08;2&#xff09;Hand-voc2 &#xff08;3&#xff09;Hand-voc3 …

【OpenCV(3)】linux arm aarch 是 opencv 交叉编译与使用

文章目录 1、直接找github 别人编译好的2、自主编译参考 3使用CMake检查 参考 1、直接找github 别人编译好的 测试很多&#xff0c;找到一个可用的。 https://github.com/dog-qiuqiu/libopencv 它用了超级模块&#xff01; OpenCV的world模块也称为超级模块&#xff08;supe…

gStore入选BenchCouncil年度世界开源系统杰出成果

“只以贡献分高下” BenchCouncil&#xff08;国际测试委员会&#xff09; 邀请了多位独立科学家 从2022至2023年度数万项开源相关成果中 遴选出了102项代表性成果 在确定主要贡献者的基础上 产生了开源领域 年度人才榜、机构榜、国家榜 共195人进入榜单 中国在“开源…

Marin说PCB之 PCB封装和原理图封装的藕断丝连

最近天气开始降温了&#xff0c;小编我不得不拿出珍藏多年的秋裤穿上了&#xff0c;就是走路不太方便&#xff0c;有点紧啊&#xff0c;可能是当时衣服尺码买小了吧&#xff0c;不可能是我吃胖了&#xff0c;这个绝对不可能。 话说小编我今年属实有点走霉运啊&#xff0c;下班和…

Camtasia2024全新中文版电脑录屏工具

在这个视频的大舞台上&#xff0c;每一帧都是你炫耀的机会&#xff0c;每一秒都是让观众瞪大眼睛的瞬间。现在&#xff0c;让我们一起飞跃时空&#xff0c;用更少的时间创作更多的惊喜吧&#xff01; 就算你是个小白&#xff0c;毫无经验&#xff0c;别担心&#xff0c;Camtas…

Jmeter添加变量的四种方法

一、在样本中添加同请求一起发送的参数。根据服务器设置的数据类型&#xff0c;来添加不同类型的参数 二、用户定义的变量 1、创建&#xff1a;添加->配置元件->用户定义的变量 2、作用&#xff1a;当前的线程组内所有Sampler都可以引用变量&#xff0c;方便脚本更新&a…

2023年阿里云服务器最新日常价、活动价格、可使用优惠券金额及券后价格参考

阿里云服务器最新实际购买价格参考&#xff0c;轻量应用服务器2核2G3M带宽配置日常价720.00元/1年&#xff0c;最新活动价格为87元/1年&#xff0c;订单满300元以上即可使用满减优惠券&#xff0c;例如经济型e实例2核4G2M带宽日常价格为1802.40元&#xff0c;最新的活动价格为8…

从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

引言 在OpenAI DevDay发布会上&#xff0c;OpenAI再次震撼整个人工智能行业&#xff0c;为AI领域带来了重大的更新。CEO Sam Altman宣布推出了定制版本的ChatGPT&#xff0c;这意味着用户现在可以根据自己的需求打造个性化的GPT&#xff0c;并分享至GPT Store。这一消息对于受A…

C++网络编程库编写自动爬虫程序

首先&#xff0c;我们需要使用 C 的网络编程库来编写这个爬虫程序。以下是一个简单的示例&#xff1a; #include <iostream> #include <string> #include <curl/curl.h> #include <openssl/ssl.h>const char* proxy_host "duoip"; const in…

sd-wan网速测试:如何测试sd-wan网速?

SD-WAN是一种新兴的网络技术&#xff0c;可以显著提高企业的网络连接速度和性能。在当今的数字时代&#xff0c; 网络连接的质量对企业的运营至关重要。因此&#xff0c;sd-wan的网络速度测试尤为重要。 在进行sd-wan网速测试之前&#xff0c;我们首先需要知道什么是sd-wan-wa…