概述
先来一个传送门
本题在洛谷难度定为“普及-”,其实并不是很难,但我第一次做的时候只有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 - 公交换乘 题解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复