|
沙发
楼主 |
发表于 2020-1-29 14:18:53
|
只看该作者
此题读起来很长,但是思路其实比较简单,顺序读入数据,若是地铁,没办法,ans+=p。若是公交,找前面满足下面三个条件的地铁,找到了,不用给钱,没找到, ans+=p:
条件1:地铁
条件2:票价大于等于我得这
条件3:时间之差<=45。
根据这些分析,立刻写出简单的模拟程序,如下,交上去,得到30分,为什么呢,因为查找符合条件的票时间所花的时间太多了
- #include <iostream>
- using namespace std;
- const int mm=100010;
- int n,b[mm],p[mm],t[mm];
- int ans,i,j;
- int main()
- {
- ans=0;
- cin>>n;
- for (i=1; i<=n; i++)
- {
- cin>>b[i]>>p[i]>>t[i]; ///读入并保存数据
- if (b[i]==0) ans+=p[i]; ///地铁的话直接付钱
- else
- {
- bool f=0;
-
- for (j=1; j<=i-1; j++) ///查找符合三个条件的地铁
- if (b[j]==0 && p[j]>=p[i] && t[i]-t[j]<=45)
- {
- b[j]=1; ///把他的标记改掉,
- f=1;break;
- }
- if (f==0) ans+=p[i];
- }
- }
- cout<<ans;
- return 0;
- }
复制代码 |
|