问题标题: 酷町堂:4361 上学时间

0
0
已解决
胡景波
胡景波
中级光能
中级光能

4361   上学时间经验值:800

不许抄袭,一旦发现,直接清空经验!

题目描述 Description

图图和小美都是勤奋的孩子,他们每天一大早就起来,洗漱完毕、吃过早饭,就匆匆赶到学校。牡丹小学的学区是A小区和B小区。具体位置见下图:
1.jpg
学生周一至周五早上分别从两个方向到学校上学。学校两边各有一个丁字路口,经常会堵车。如果开车,A小区和B小区过路口的平均时间分别为t1和t2;如果步行,A小区和B小区过路口的平均时间分别为t3和t4。学生可以选择让父母开车送自己去上学,也可以选择步行去上学。给出每一个学生的如下信息,住在哪个小区f,从小区到路口的开车时间t5,从路口到学校的开车时间t6,从小区到路口的步行时间t7,从路口到学校的步行时间t8。每个学生上学的总时间为:从小区到路口的时间+过路口的时间+从路口到学校的时间。请你统计六(1)班的n位同学从家出发到达学校的最短时间之和。

输入描述 Input Description

n+2行:第一行一个正整数n,表示人数;第二行四个正整数t1,t2,t3,t4;接下来的n行,每行五个正整数f,t5,t6,t7,t8,f=1表示住在A小区,f=2表示住在B小区。

输出描述 Output Description

一行:一个正整数,表示n位同学上学最短时间之和。

样例输入 Sample Input

2 20 18 3 2 1 5 7 20 26 2 6 6 10 9

样例输出 Sample Output

53

数据范围及提示 Data Size & Hint

第一位同学住在A小区,坐车去学校的时间:5+20+7=32分钟,步行去学校的时间:

20+3+26=49分钟,因此坐车时间较短,为32分钟。第二位同学住在B小区,坐车去学校的时间:

6+18+6=30分钟,步行去学校的时间:10+2+9=21分钟,因此步行时间较短,为21分钟。
两人上学最短时间为32+21=53分钟。
数据范围:
1<=n<=50,1<=t1,t2,t3,t4,t5,t6,t7,t8<=50,时间单位是分钟。

80分的WA代码:

#include<iostream>

using namespace std;

struct school{

int f,t5,t6,t7,t8,ans,pos;

}a[10335];

int n,sum,t1,t2,t3,t4;

int main(){

cin>>n;

cin>>t1>>t2>>t3>>t4;

for(int i=1;i<=n;i++){

cin>>a[i].f>>a[i].t5>>a[i].t6>>a[i].t7>>a[i].t8;

if(a[i].f==1){

a[i].ans=t1+a[i].t5+a[i].t6;

a[i].pos=t3+a[i].t7+a[i].t8;

if(a[i].ans>a[i].pos)sum+=a[i].pos;

else if(a[i].ans<a[i].pos)sum+=a[i].ans;

}

else if(a[i].f==2){

a[i].ans=t2+a[i].t5+a[i].t6;

a[i].pos=t4+a[i].t7+a[i].t8;

if(a[i].ans>a[i].pos)sum+=a[i].pos;

else if(a[i].ans<a[i].pos)sum+=a[i].ans;

}

}

cout<<sum;

return 0;

}


0
已采纳
蔡乐毅
蔡乐毅
高级光能
高级光能
  • cin>>a[1][1]>>a[2][1]>>a[1][2]>>a[2][2];
  • for(int i=1;i<=n;i++){
  • int t;
  • cin>>t;
  • cin>>b>>c>>d>>e;
  • int minn=min(b+c+a[t][1],d+e+a[t][2]);
  • sum+=minn;
  • }
  • cout<<sum<<endl;
  • 定义一个二维数组
0
0
我要回答