
思路:
分类,看是乘地铁还是公交,如果是地铁,就加上价值,如果是公交车,就如题模拟
C o d e Code Code:
#include <cstdio>
#include <iostream>
using namespace std;
int n,fs,sum,ans,k,number = 1 ;//number防TLE
int t[100001],price[100001],dl[100001],s[100001];
bool ok[100001];//记录票
int main ()
{
scanf ("%d", &n);
for (int i = 1; i <= n; ++i){
scanf ("%d%d%d", &fs, &price[i] ,&t[i]);
if (fs == 0){++sum;dl[sum] = price[i]; s[sum] = t[i];ans += price[i];}//地铁
if (fs == 1) {//公交
k = 0;
for (int j = number; j <= sum; ++j){
if (ok[j]) continue; //用过票就跳过
if(t[i] - s[j] > 45) number=j;//如题
else if(dl[j] >= price[i]){
k = j;
ok[k] = 1;//记录
break;
}
}
if(k == 0)ans += price[i];//累加
}
}
printf("%d",ans);//输出
}
最后
以上就是时尚蓝天最近收集整理的关于(CSP2019·J T2)公交换乘【模拟】的全部内容,更多相关(CSP2019·J内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复