题目链接:
解题报告:
1、贪心算法,每次过两个速度最慢的人,抵消那个较慢的人的时间。
#include#include using namespace std;int a[10000];int main(){ int t; scanf("%d",&t); while(t--) { int i; int time=0; int n; scanf("%d",&n); for(i=0;i 2;i-=2) { ///两种方案 ///1、a[i]和a[i-1]两个人与a[0]一起过河,由a[0]送手电筒 ///2、a[0]和a[1]首先过河,再a[0]过来,再a[i]和a[i-1]过来,再a[1]送手电筒 time+=min(a[i]+a[i-1]+2*a[0],a[1]+a[0]+a[i]+a[1]); } if(i==1)///两个人 time+=a[1]; else time+=a[0]+a[1]+a[2];///a[0]和a[2]过河,再a[0]送手电筒,再a[0]和a[1]过河。 } printf("%d\n",time); } return 0;}