NOIP公交换乘

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

这道题是noip复赛题,我今天跟大家讲一讲。

首先,上题目。

题目描述

著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案:

1.在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于 45 分钟,即: tbus - tsubway≤45

2.搭乘地铁获得的优惠票可以累积,即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。
3.搭乘公交车时,如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。
现在你得到了小轩最近的公共交通出行记录,你能帮他算算他的花费吗?

输入

输入文件的第一行包含一个正整数n,代表乘车记录的数量。
接下来的n行,每行包含3个整数,相邻两数之间以一个空格分隔。第i行的第1个整数代表第 i 条记录乘坐的交通工具,0 代表地铁,1 代表公交车;第 2 个整数代表第 i 条记录乘车的票价 pricei;第三个整数代表第 i 条记录开始乘车的时间 ti(距 0 时刻的分钟数)。
我们保证出行记录是按照开始乘车的时间顺序给出的,且不会有两次乘车记录出现在同一分钟。

输出

输出文件有一行,包含一个正整数,代表小轩出行的总花费。

样例输入复制

输入样例1:
6
0 10 3
1 5 46
0 12 50
1 3 96
0 5 110
1 6 135

输入样例2:
6
0 5 1
0 20 16
0 7 23
1 18 31
1 4 38
1 7 68 

样例输出复制

输出样例1:
36

输出样例2:
32

第一个样例过程是这样的:

第一条记录,在第 3 分钟花费 10 元乘坐地铁。

2019年CSP-J第二题《公交换乘》解析 【问题描述】 著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案: 1. 在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于 45 分钟,即: ... 阅读详情

相关推荐

luogu-P5661 公交换乘

题目连接 该题是CSP-J2-2019-T2 题目大意 可以选乘公车或者地铁; 乘坐地铁时:一定要买票,但会获得(45分钟内有效)的免费公车券; 乘坐公车时:有券一定用券(而且先用早的券),没券则买票; 问:最小的花费。 题目分析 根据NOIP的惯例,这个T2也应该是签到题,大胆地想模拟。 结果发现,真的是个大模拟,注意细节就好。 参考代码 //CSP-J2-2-公交换乘 //贪心模...

liusu201601的博客 717

2019csp-j2试题.doc

2019csp-j2试题.doc

CSP-J 2019 第二轮 复赛简单解析

第一题:数字游戏,签到题 #include <iostream> #include <cstdio> using namespace std; int main() { freopen("number.in", "r", stdin); freopen("number.out", "w", stdout); string s; ci...

KQZXCMH的博客 8108

2019CSP-J第二轮解题报告C++

2019CSP-J第二轮解题报告C++版,T1:数字游戏,T2:公交换乘,T3:纪念品,T4:零件加工。 2019CSP-J第二轮解题报告C++版,T1:数字游戏,T2:公交换乘,T3:纪念品,T4:零件加工。

noip2019普及组 公交换乘

题目 公交换乘 算法 (滑动窗口,队列) O(45n)O(45n)O(45n) 这道题目有个限制很重要: 不会有两次乘车记录出现在同一分钟 这就说明对于每个公交车来说,所能使用的优惠券不会超过45张。即我们可以完美避开各种复杂的数据结构优化了。 因此我们可以从前往后扫描每条记录,同时用一个队列维护当前车次可以使用的优惠券区间: 如果当前记录是火车,则加入维护的优惠券区间; 如果当前记录是公...

Carlo666的博客 2570

信息学奥赛一本通 1983:【19CSPJ普及组】公交换乘 | 洛谷 P5661 [CSP-J2019] 公交换乘

tk[st]的获得时间到当前时间最多45分钟,题中指出“不会有两次乘车记录出现在同一分钟”,因而有效的优惠票不会超过45个,每次遍历有效优惠票的循环次数不会超过45次。因为每次获得优惠票的时间是有序的,因而设置变量st,每次从st开始遍历。相比于每次从头遍历,这样做可以减少对无效票的遍历,降低时间复杂度。设下标st,tk[st]是当前时间下,时间最早的有效的票。当i=st时,tk[i]是有效的票。设置数组tk保存优惠票,优惠票的属性有:获得时间,价格。

君义NOIP的博客 3823

NOIP普及组 - 2019 - 公交换乘 题解

先来一个传送门 本题在洛谷难度定为“普及-”,其实并不是很难,但我第一次做的时候只有30分,剩余的都是TLE, 在我进行了一个修改后就AC了。 本题我用的是一个结构体和一个main函数,先来看看结构体 struct Node{ long long time, price, vis = 0; // 没被用过是1,用过是2 }a[100010]; 每次乘地铁时进行一个这样的操作, 如果没看出有什么用,那就看接下来的代码 int main(){ long long n, x, y, z, sum = 0,

williamllk的博客 1413

2019年CSP-J2第二题:公交换乘(transfer)题解

题目来源 2019年CSP-J第二轮认证,第二题公交换乘。 题目链接:http://47.110.135.197/problem.php?id=5077。 题面 著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案: 在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期...

努力中的老周的专栏 1万+

NOIP2019普及组复赛】题2:公交换乘

著名旅游城市B市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案:1、在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。tbus−tsubway≤452、搭乘地铁获得的优惠票可以累积,即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。3、搭乘公交车时,如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。

lpstudio的博客 1398

洛谷 NOIP2018普及组 龙虎斗 + 洛谷 CSJ-2019 公交换乘 代码优化

属于是一点脑子都不动这个方法,就是在输入完之后,我们引入一个ansp2,这个变量是来第一次更新ansp2的时候用到的,然后在每一次枚举之中,通过套两重循环,来不断的通过tmp和当时的ans进行比较,来判断是否需要更新ans还有ansp2,sum1,sum2分别是两个阵营的气势之和,最后输出我们要的ansp2即可。

2301_80050923的博客 475

2019NOIP普及组题解

2019NOIP普及组题解 最近重新捡起了好久没学的算法,刚好2019NOIP刚刚比赛完,就去做了一下普及组的题目(提高组太变态了),感觉思维方面的东西比较多,相对来说数据结构考的不是很复杂,难点大多在于模型的建立与求解。题目评测都是在北大NOIP金牌大佬yxc开发的ACwing上做的,没有官方测试数据, 所以也不能保证代码一定完全正确。下面先来看题目吧… 1161. 数字游戏 原题链接 分析...

weixin_43896255的博客 6338

191214Practice CSP-J-2019

zgs给我们做今年的普及组 早上在洛谷上求了个签 大凶之兆 果然死了 同机房的小妹妹都ak全场了 我菜的一批啊T_T 总结了个小经验: 打代码不要太骚 dfs(in,in)不行就换成 int a=in,b=in; dfs(a,b); T1 数字游戏 Number #include<bits/stdc++.h> using namespace std; #define re regist...

Antimonysbguy的博客 313

公交换乘系统 C++实现

由于换乘麻烦,自己做了一个小的换乘系统,

公交换乘查询系统

公交换乘查询系统

2019年NOIP普及组复赛真题解析

编号为 1 的工人想生产第 5 阶段的零件,需要编号为 2 和 5 的工人生产第 4 阶段 的零件,需要编号为 1,3,4 的工人生产第 3 阶段的零件,需要编号为 2,3,4,5 的工人生产 第 2 阶段的零件,需要全部工人生产第 1 阶段的零件,需要全部工人提供原材料。编号为 1 的工人想生产第 3 阶段的零件,需要编号为 2 和 5 的工人生产第 2 阶段的零件,需要编号为 1,3,4 的工人生产第 1 阶段的零件,需要编号为 2,3,4,5 的工人提供 原材料。轩轩是 1 号工人。

weixin_42358969的博客 1292

c++模拟

学习c++模拟的看过来

sync_async的博客 512

noi-2026年1月07号作业

我们定义一个deque来存储每只船的id,同时定义t数组、k数组、e数组来分别存放每只船到达的时间、乘客数、乘客的国籍。因为两个数组的和相等,所以一定可以使得两个数组相等,最差的情况就是两个数组都全不合并。我们定义一个deque来存储优惠劵,然后再按照题目的意思进行模拟,因为每个乘车的时间点都不一样,所以我们只需要在暴力枚举的时候最多找45个。我们定义一个queue来模拟入内存、出内存的操作,同时使用vis来标记数是否在内存里面(也就是是否在队列里面)P2058 [NOIP 2016 普及组] 海港。

qq_62131379的博客 402

CSP-J2-2019-解题报告

NOIP暂停,更名为CSP.... 以下是普及组的题目与分析(应该是官方数据) 编号 题目 考核内容 难度 1 数字游戏 字符串基础 1 2 公交换乘 贪心+模拟 3 3 纪念品 思维转化(难)+多重背包 7 4 加工零件 思维转化(难)+拆点+最短路 10 吐槽几句吧! ...

liusu201601的博客 817

noip模拟赛 公交

题目描述LYK在玩一个游戏。有k群小怪兽想乘坐公交车。第i群小怪兽想从xi出发乘坐公交车到yi。但公交车的容量只有M,而且这辆公交车只会从1号点行驶到n号点。LYK想让小怪兽们尽可能的到达自己想去的地方。它想知道最多能满足多少小怪兽的要求。当然一群小怪兽没必要一起上下车,它们是可以被分开来的。 输入格式(bus.in) 第一行三个数k,n,M。 接下来k行每行3个数xi,yi和ci。...

weixin_30685047的博客 172
上一篇: Even More Odd Photos USACO
下一篇: 《【提高】卫星照片》—记得点赞哦,一人一赞,美好不断。
丁哲楷
博客等级 码龄5年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值