test-2020-10-27 (公交换乘 对称二叉树 photo)

本文回顾了CSP2019-J的两道题目,包括公交换乘问题的模拟解决策略,强调了在处理优惠票时要考虑时间顺序和有效性。此外,还介绍了对称二叉树的概念,通过DFS算法判断二叉树是否对称。通过实例解析,帮助读者理解解题思路。
摘要由CSDN通过智能技术生成

时隔多月,终于准备再水一篇博客了,还有9天就CSP提高了,考完没一等奖就当中考er了,应该就不会怎么动这个博客了。


这次考三道题,两道CSP2019-J原题,重温一下那种感觉吧。

T1:公交换乘

这道题是CSP2019-J的T3,满满的怀旧,当年就挫败在了这道题之下,现在一看,就一道模拟嘛。

思路:题目给的很明确:

如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。

我们保证出行记录是按照开始乘车的时间顺序给出的,且不会有两次乘车记录出现在同一分钟。

记录既然按时间顺序给出,而票又一定是先用符合条件且先得到的,就不需要考虑哪张优惠劵先用这些诸如此类的乱七八糟的问题了。

  • 最开始一看,直接数组模拟线性过一遍就完事,结果每次扫优惠劵放到数组里都从头扫到尾,直接就扫炸了。还是我太蒻了
  • 然后,细细一想,原来没有控制下边界,每次扫的时候不能扫完,用时间把数组约束到一个范围里,再从最先获得的票开始找,就直接改一下原来的代码,把数组改成数组模拟队列就完事了。

代码:

#include <bits/stdc++.h>
using namespace std;
int n,ans,tail,head;
struct node {
   
	int t,p;
} tik[100010];//结构体模拟优惠券,存过期时间和券的价值
bool vis[100010];//标记这张优惠劵是否用过
int main() {
   
	cin>>n;
	for(int i=1; i<=n; i++) {
   
		int ki,pr,ti;
		cin>>ki>>pr>>ti;//kind,price,time
		if(ki==0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值