我的代码堵塞代码2015有什么问题

时间:2015-04-12 02:11:21

标签: c++

这是问题

在Infinite House of Pancakes,只有有限的煎饼,但是有无数的食客愿意吃它们!当餐厅开放供应早餐时,在无限多的食客中,正好D有非空盘子;其中的第i个在他或她的盘子上有Pi煎饼。其他人都有一个空盘子。

通常,每一分钟,每个有非空盘子的用餐者都会从他或她的盘子里吃一个煎饼。但是,有些时间可能很特别。在一个特殊的时刻,头部服务器要求用餐者。注意,选择带有非空盘子的用餐者,小心地将一些煎饼从用餐盘上取下,然后将这些煎饼移到另一个餐馆(空的或非空的)盘子上。没有食客在特殊时刻吃东西,因为这样会很粗鲁。

你是今天早上值班的头部服务员,你的工作是决定哪些会议纪要,特别是哪些,以及哪些煎饼会搬到哪里。也就是说,每分钟,你都可以决定要么什么都不做,让食客吃饭,或宣布一个特殊的时间,并打断用餐者做一个或多个煎饼的单一动作,如上所述。

当没有剩余的煎饼可以吃时,早餐就结束了。你能多快实现这一目标? 输入

输入的第一行给出了测试用例的数量,T。T测试用例如下。每个包含一条带有D的线,带有非空盘的用餐者的数量,接着是另一条带有D空格分隔整数的线,表示这些用餐者的煎饼数量。板。 输出

对于每个测试用例,输出一行包含" Case #x:y",其中x是测试用例编号(从1开始),y是完成早餐所需的最小分钟数。 限制

1≤T≤100。 小数据集

1≤D≤6。 1≤Pi≤9。 大数据集

1≤D≤1000。 1≤Pi≤1000。

样品

输入

3
1
3
4
1 2 1 2
1
4

输出

Case #1: 3
Case #2: 2
Case #3: 3

这是我的源代码

int result = 0, D = 0;

int part(vector<int> v1) {

    if(v1[D - 1] == 0)
        return 0;

    int t1 = 0, t2 = 0, t3 = 0, i = 0;
    vector<int> v2;

    for(i = 0; i < D; ++i)
        if(v1[i])
            v2.push_back(v1[i] - 1);
        else
            v2.push_back(0);

    if(v1[D - 1] == 1)
        v1[D - 1] = 0;

    else if( v1[D-1] % 2 )
        v1[ D- 1 ] = ( v1[D-1] / 2 ) + 1;

    else
        v1[ D -1 ] = v1[ D - 1 ] / 2;

    sort(v1.begin(),v1.end());

    t1 = 1 + part(v1);
    t2 = 1 + part(v2);
    t3 = min(t1,t2);
    return t3;


}

int main(void) {



    int T = 0, count = 0;
    scanf("%d",&T);
    while(T--) {

        vector<int> v1;
        vector<int> ::iterator it;
        int i = 0, temp = 0; D = 0;
        result = 0;
        ++count;

        scanf("%d",&D);
        for(i = 0; i < D; ++i) {
             scanf("%d",&temp);
            v1.push_back(temp);
        }
        sort( v1.begin(), v1.end() );

        result = part(v1);




        printf("Case #%d: %d\n",count,result);
    }



    return 0;
}

0 个答案:

没有答案