我是靠谱客的博主 阳光面包,最近开发中收集的这篇文章主要介绍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, k = 1, last = 1; //n是乘车次数,x,y,z分别是要输入的三个数,sum是需要花的钱的总数,k是有多少张优惠券,last是从多少开始用优惠券 
	int flag = 0;  //判断是否使用优惠券 
	cin >> n;
	for (int i = 1; i <= n; i++){
		cin >> x >> y >> z;
		if (x == 0){
			sum += y;
			a[k].time = z;
			a[k].price = y;
			a[k].vis = 1;
			k++;
		}
		if (x == 1){
			flag = 0;
			for (int j = last; j < k; j++){
				if(a[j].vis == 1 && a[j].price >= y && z - a[j].time <= 45){
					a[j].vis = 2;
					flag = 1;
					break;
				}
				if (z - a[j].time > 45){
					last = j;
				}
			}
			if (flag == 0)
				sum += y;
		}
	}
	cout << sum << endl;
	return 0;
}

大部分代码内容我都写上了注释,如果有没看懂的部分可以在这个博客下留言,我会来解答

谢谢观看,求点赞

最后

以上就是阳光面包为你收集整理的NOIP普及组 - 2019 - 公交换乘 题解的全部内容,希望文章能够帮你解决NOIP普及组 - 2019 - 公交换乘 题解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部