模拟算法题解(简单易懂)
2025-10-29 16:42:22
发布于:浙江
0阅读
0回复
0点赞
其实题目比较直接,分支判断地铁还是公交,然后用两个vector一个去存地铁价格(后续要和公交价格比较),一个去存时间(判断有没有超时),再然后用bool类型去判断免费票的问题即可
#include<iostream>
#include<vector>
using namespace std;
const int N=1e5+10;
int n,x,y,z,price;
vector<int>instant;
vector<int>subprice;
vector<int>busprice;
int main(){
cin>>n;
while(n--){
//cout<<price<<" ";
cin>>x>>y>>z;
if(x0){
price+=y;
instant.push_back(z);//把z放到price里去
subprice.push_back(y);
}
else if(x1){
busprice.push_back(y);
bool flag=false;//判断有没有用免费票
for(int i=0;i<instant.size();i++){
if(instant[i]+45>=z&&instant[i]!=-1&&y<=subprice[i]){//如果没超过就可以免费
instant[i]=-1;
flag=true;
break;
}
}
if(!flag){//如果没有找到免费票就可以用
price+=y;
}
}
}
cout<<price;
return 0;
}
这里空空如也


有帮助,赞一个