团体程序设计天梯赛-练习集 - L1-049. 天梯赛座位分配(20 分)

题目链接:点击打开链接

 

题目大意:

 

解题思路:模拟题(16分的天坑),16分的童鞋:关键在于,3 4 2; 3 3 4 3; 3 1 1; 观察这几组,最后一个学校的剩余的队伍的第一个队伍的第一个数据是致命点,如果是从其他学校转过来的计算开始,应该+1即可,而不是+2;如果是从当前学校转过来的计算开始,应该+2

 

AC 代码

#include

using namespace std;

typedef long long ll;

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int a[n],b[n],cnt[n]={0},maxn=INT_MIN,flag=1;
        for(int i=0;i v[n];
        int last=1;
        int k=1,tmax=b[n-2]*10;
        for(int j=0;jcnt[i])
                {
                    cnt[i]++;
                    if(cnt[i]>tmax && flag==1)
                    {
                        if(last) // 高能!高能!16分的同学看过来,这里第一开始需要特殊处理,i.e. 3 3 1   3 3 4 3   3 4 2
                        {
                            if(k-v[i][tmax-1]!=1)
                                k--;
                            last=0;
                        }

                        k++;
                        v[i].push_back(k++);
                    }
                    else
                        v[i].push_back(k++);
                }
            }
        }

        for(int i=0;i=10)
                    puts(""),count=0;
            }
        }
    }

    return 0;
}

你可能感兴趣的:(#,PTA)