1 条题解
-
0
自动搬运
来自洛谷,原作者为

Maxrage
AFO|极怒中的C++蒟蒻在此!|最近曲品比较差,大概是膜拜carrotqq与铃酱与兔队与神鱼的次数少了,从今以后每天早中晚各膜拜两次搬运于
2025-08-24 22:27:28,当前版本为作者最后更新于2021-02-05 11:19:02,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
在题解区看到一大群大佬的做法,然后蒟蒻就迷茫,一道红题至于吗,所以我决定用个最简单的:按照题目模拟。
我们用一个图来解释杨样例一:

首先是1-2,一辆车,2-3,两辆,3-5,...然后我们要注意到他的最先开始的和最后结束的时间,在没有车(0)时收费为0,判断该时段有几辆车,然后收费。
所以可以:struct car{ int begn; int endd; }k[15];//有struct为何不用呢,多香!用这一段:
for(int i=test;i<=teed;i++) { int carliang=0;//车量 for(int j=1;j<=3;j++) { if(i>=k[j].begn&&i<k[j].endd)//有新车 carliang++;//车量+1 } ans+=carliang*price[marx]; }整体代码:
#include<bits/stdc++.h>//万能头好习惯 using namespace std; struct car{//存储开始与结束时间 int begn; int endd; }k[15]; int price[15]; int test=999999,teed=0;//开始与结束 inline int read()//快读 { int s=0,w=1; char ch=getchar();//最快的输入方式 while(ch<'0'||ch>'9') { if(ch=='-')w=-1; ch=getchar(); } while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar(); return s*w; } int main() { for(int i=1;i<=3;i++) price[i]=read(); price[0]=0; for(int i=1;i<=3;i++) { k[i].begn=read();k[i].endd=read(); if(k[i].begn<=test) test=k[i].begn; if(k[i].endd>=teed) teed=k[i].endd; } int ans=0; for(int i=test;i<=teed;i++) { int carliang=0;//车量 for(int j=1;j<=3;j++) { if(i>=k[j].begn&&i<k[j].endd)//有新车 carliang++;//车量+1 } //cout<<carliang<<endl; ans+=carliang*price[carliang]; } //判断与收费全过程 printf("%d",ans); return 0; }结束了吗?
没有
最后提醒几个注意点:
- 第 分钟不收费。
- 一定注意没车时收费为0。
一定要点赞的。
- 1
信息
- ID
- 5753
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者