void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

题意:一个渡河问题,船每次最多可以载n辆车,单程渡河的时间是t,有m辆车要渡河,问最少时间把所有车运过河去的时间是多少,这个情况下,最少的运输次数是多少。

表示还不太懂,过几天再看看吧,先为校内比赛准备点基础的题目算了

#include <iostream>
#include <algorithm>
using namespace std;

int max(int a, int b){return a>b?a:b;}
int t, n, cnt;
int a[1500];
int find(int p)
{
        if(p<=n)return a[p];
        else 
        {
                cnt++;
                return max(a[p], find(p-n)+t*2);
        }
}
int main()
{
        
        int k, m, i, ans;
        scanf("%d", &k);
        while(k--)
        {
                scanf("%d %d %d", &n, &t, &m);
                for(i=1; i<=m; i++)
                {
                        scanf("%d", &a[i]);
                }
                sort(a+1, a+m+1);
                cnt = 1;
                ans = find(m);
                printf("%d %d\n",ans+t, cnt);
        }
        return 0;
}
posted on 2011-04-19 00:18  void-man  阅读(148)  评论(0)    收藏  举报