CSP2019第二题: 公交换乘

news2025/7/10 14:13:37

CSP 2019 公交换乘
题目来源:牛客网
题目:*
在这里插入图片描述
在这里插入图片描述

示例1
输入

6 
0 10 3 
1 5 46 
0 12 50 
1 3 96 
0 5 110 
1 6 135

输出

36

题意:
根据输入,计算地铁花费+不能用到优惠券的公交车的花费
知识点:
结构体
思路:

  • 题目相对简单:当输入是地铁就直接累计花费,如果是公交,就从前面开始遍历数据,看看是否有满足条件的乘坐地铁后的优惠券,无则累计该公交的花费
  • 储存变量时,可能想到用二维数组储存数据,一行就是出行一次,标记优惠券的情况。但是因为n能达到105,105*3 二维数组空间复杂度比较大(但不至于空间超出限制)。仔细看,其实后面输入的数据,我们只需要考虑前面的地铁的出行的情况,所以可以直接用三个变量储存当前数据(此时用二维数组略微有点浪费),如果是地铁出现,保存到结构体中即可,为了缩短后续遍历时间,结构体的序号为地铁的出现次数即可。
  • 设置结构体后,考虑遍历的复杂度,可能能达到n2,而n最大为10 5 ,一定会超时。再想办法缩短时间时,唯一可限定的就是时间间隔<=45min,所以遍历处理公交出行时最多就往前45个位子(如果有,没有就从0开始)。

数据约束:
题目数据相对还好,无约束
参考代码:

#include<bits/stdc++.h>
#define MAX_N 100005
using namespace std;
struct stu{
	int price;
	int time;
	int mark=1;//记录坐地铁后券的使用情况 
	int s;//标记乘坐的序号 
};
stu sub[MAX_N],bus[MAX_N];
int main(){
	int n,n0=0,num=0;
	int ty,pr,ti;//n0为地铁数,n1为公交数 
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>ty>>pr>>ti;
		if(ty==0){ //标记地铁即可 
			sub[n0].price=pr;
			sub[n0].time=ti;
			sub[n0].s=i;
			n0++;
			num+=pr; //直接+钱 
		}else{
			int j=0,flag=1;
			n0-45>=0?j=n0-45:j=0;
//			cout<<"j: "<<j<<endl;
			for(j;j<n0;j++){ //价格更小,间隔《=45,是该公交之前的地铁在前, 券没用过 
				if(pr<=sub[j].price&&ti-sub[j].time<=45&&i>=sub[j].s&& sub[j].mark==1){
					sub[j].mark=0;
					flag=0;
					break;
				}
			}
			if(flag){
				num+=pr;
			}
		}
	}
	cout<<num; 
	return 0;
} 

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

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

相关文章

Spring(Day2)

一、静态代理 静态代理的主要特点是代理类和被代理类通常具有相同的接口&#xff0c;这样客户端代码可以透明地使用代理类代替被代理类。 首先我们建立一个接口Shopping&#xff0c;在里面定义一个shopping方法。然后创建两个类EasyA和Proxy类来继承Shopping类&#xff0c;并重…

前端 react 实现图片上传前压缩 缩率图

目录 一、安装 二、编写工具类 三、获取压缩后的File对象 一、安装 npm install compressorjs 或 yarn add compressorjs 官方文档&#xff1a;compressorjs - npm (npmjs.com) 二、编写工具类 /*** author Dragon Wu* since 2024/8/4 12:23* 图片压缩工具*/ import Com…

《无畏契约》现已正式登陆Xbox Series X|S和PS5主机

拳头游戏日前已在没有任何通知的情况下直接在 Xbox Series X|S 和 PS5 主机上推出了其竞技射击游戏《无畏契约》。经过6 月的短暂测试后&#xff0c;游戏的主机版已经在美国、加拿大、欧洲、日本和巴西推出&#xff0c;将包括与 PC 版相同的玩法、英雄和技能。 主机版本将永远不…

论网络流(最大流篇)--新手入门超详解--包教包会

论网络流--新手入门超详解--包教包会 1 前言2 什么是最大流3最大流问题的求解&#xff08;1&#xff09;问题转化--增广路的引入&#xff08;2&#xff09;走回头路--EK算法&#xff08;3&#xff09;EK的弊端&#xff08;4&#xff09;化图为树--DINIC算法 4后记 1 前言 网络…

小型空气净化器什么牌子好?小型空气净化器用户体验

自从家里有了4只英短后&#xff0c;一到季节我就得不停的拖地刷床&#xff0c;除了这些可以手动清理的猫毛之外&#xff0c;那么空气中的猫毛怎么办&#xff1f;多猫家庭确实很快乐&#xff0c;但一到换毛季&#xff0c;家里地上、空气里全是猫毛。每天都需要拼命的吸地板&…

Linux命令用法

文章目录 前言一、Linux基础命令1. Linux目录结构2. Linux命令入门3. 目录切换相关命令&#xff08;cd、pwd&#xff09;4. 相对路径、绝对路径和特殊路径符5. 创建目录命令&#xff08;(mkdir&#xff09;6. 文件操作命令part1(touch、cat、more&#xff09;7. 文件操作命令pa…

经验分享|temu电商项目怎么做能更好的盈利?

在当今竞争激烈的电商市场中&#xff0c;如何让TEMU这样的电商项目实现更好的盈利&#xff0c;是每个创业者和企业家关注的核心问题。以下是几点关键的策略和方法&#xff0c;可以帮助TEMU电商项目实现更好的盈利。 首先&#xff0c;产品选择和定位至关重要 TEMU需要选择具有市…

黑马Java零基础视频教程精华部分_10_面向对象进阶(2)_多态、包、final、权限修饰符、代码块

系列文章目录 文章目录 系列文章目录一、多态1、什么是多态&#xff1f;2、多态的表现形式3、多态的前提4、多态的好处5、多态调用成员的特点6、多态的优势和弊端7、引用数据类型的类型转换 二、包1、什么是包&#xff1f;2、包名的规则3、使用其他类的规则 三、final 最终的&a…

通过指令深入了解Linux

1.简单介绍XShell 未来我的所有关于Linux的讲解都是提供XShell登入远程的Linux云服务器来教学的&#xff0c;且以centos为例。 1.1下载安装XShell xshell 下载安装时选择“home/school”为免费版本。 1.2 使用XShell登录主机 在XShell终端输入 ssh rootip ip为你所购买的…

功能实现——使用 RestTemplate 进行跨项目接口调用

目录 1.需求说明2.项目环境搭建3.代码实现3.1.使用 RestTemplate 进行调用3.1.1.项目 A3.1.2.项目 B 3.2.测试3.3.使用 JsonObject 来传递和接收 json 数据3.3.1.说明3.3.2.代码实现 3.4.其它说明3.4.1.restTemplate.exchange()3.4.2.restTemplate.postForObject()3.4.3.区别总…

【Java】Java学生成绩管理系统(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Ubuntu 18.04,调整字体大小, 隐藏GNOME顶部状态栏

先安装 sudo apt-get install gnome-tweak-tool sudo apt install gnome-shell-extensions 安装后出现这个界面 这里可以调整字体大小 安装工具扩展&#xff1a; sudo apt-get install gnome-shell-extension-autohidetopbar 这里可以出现设置项 打开&#xff0c;并且…

【Altium Designer】Details Net has only one pin (Pin U1-12) 解决办法

报错图&#xff1a; 报错含义&#xff1a; Details Net has only one pin (Pin U1-12) 引脚label没接其他元器件。 解决办法1 修改报告提示&#xff0c;将“错误”改为“不报告”&#xff0c;如下图&#xff0c;在工程上 右键>>工程选项>>找到相应的错误标签提示…

个人主体的小程序可以变更为企业主体吗?

小程序迁移变更主体有什么作用&#xff1f;长期以来&#xff0c;由于部分小程序在注册时&#xff0c;主体不准确的历史原因&#xff0c;或者小程序的主体发生合并、分立或业务调整等现实状况&#xff0c;在小程序登记主体不能对应实际运营人的情况下&#xff0c;导致账号在认证…

基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…

【MongoDB数据库之未授权漏洞】

步骤一&#xff1a; 在Kali上执行以下命令搭建起MongoDB的漏洞环境.. 拉取mongo(3.6.6版本)镜像 docker pull mongo:3.6.6 启动镜像 docker run --name mongo-master -p 27017:27017 -d mongo:3.6.6 查看镜像 docker ps 步骤二&#xff1a;使用Nmap的插件脚本进行扫描..发现…

RIR转换Revit尺寸标注和值到Rhino指定图层中

RIR转换Revit尺寸标注和值到Rhino指定图层中 1、使用新增的Dimension Properties节点&#xff0c;获取尺寸标注的线和文字 2、通过elefont包的节点&#xff0c;将起按指定图层bake到rhino中 3、funbim v0.6.4版本节点包已更新到food4rhino&#xff0c;欢迎下载试用

平安养老险宿州中支参加中国特色金融文化“我在行动”演讲比赛

为积极培育和弘扬以“五要五不”为核心的中国特色金融文化&#xff0c;积极传播保险行业正能量&#xff0c;7月30日&#xff0c;由宿州市保险行业协会主办的培育和弘扬中国特色金融文化“我在行动”演讲比赛拉开帷幕。本次演讲比赛共有16位选手参与&#xff0c;平安养老保险股份…

社区检测算法(Community Detection)总结

社区检测(Community Detection) 社区检测&#xff08;Community Detection&#xff09;又被称为是社区发现。它是用来揭示网络聚集行为的一种技术。 社区检测算法用于评估节点组如何聚类或分区&#xff0c;以及它们增强或分离的趋势。 社区 社区是许多网络的属性&#xff0c;…

运维团队可视化大屏定制指南

在运维工作中&#xff0c;可视化大屏作为实时监控和数据分析的重要工具&#xff0c;其直观性和灵活性对于提高运维效率和决策质量至关重要。本文将结合运维行业的特点&#xff0c;为运维团队提供可视化大屏定制化的参考指南。 一、可视化大屏的默认配置与定制化需求 可视化大屏…