Post

hdu4939.throw nails

hdu4939.throw nails

【问题描述】

     在团队队列中每个成员都属于一个团队,如果一个成员进入队列,它首先从头到尾搜索队列,以检查它的一些队友(同一队的成员)是否已经在队列中,如果是,它会进入到该团队的后面,如果不是,它会从尾部进入队列并成为新的最后一个成员。成员出队是按常规队列操作,按照出现在队列中的顺序从头到尾进行处理。你的任务是编写一个模拟这样的团队队列的程序。

【输入形式】

     每个测试用例都以团队个数t开始(1≤t≤1000),然后是团队描述,每个描述包含属于团队的成员个数和成员编号列表,成员编号为0到999999之间的整数,一个团队最多可以包含1000个成员。然后是一系列命令,有三种不同的命令:

① ENQUEUE p:成员p进入队列。

② DEQUEUE:队列中第一个成员出来并将其从队列中删除。

③ STOP:当前测试用例结束。

【输出形式】

       对于每个DEQUEUE命令,以单独一行输出出队的成员。

【样例输入】

2

3 101 102 103

3 201 202 203

ENQUEUE 101

ENQUEUE 201

ENQUEUE 102

ENQUEUE 202

ENQUEUE 103

ENQUEUE 203

DEQUEUE

DEQUEUE

DEQUEUE

DEQUEUE

DEQUEUE

DEQUEUE

STOP

【样例输出】

101

102

103

201

202

203

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
int sumDistance(vector<int>vec,int sec){//用来计算第sec秒时该选手跑了多少米

    int x=vec[0];
    int y=vec[1];
    int sum=x+(sec-1)*y;

    return sum;

}

  
//用于将当前踩到钉子的选手“抹除”,方法是把其F、S都变成0,是而不可能参与到temp的比较中
void erasevec(vector<int>&vec){//记得引用传参

    vec[0]=0;
    vec[1]=0;

}

  
  

int main(){

    ifstream infile("in.txt");
    int N;infile>>N;
    
    vector<vector<int>>vec(N);//vector二维数组
  
    for(int x=0;x<N;x++){

        int i;infile>>i;
        int j;infile>>j;

        vector<int>subvec(2);

        subvec[0]=i;
        subvec[1]=j;

        vec[x]=subvec;

    }

    int n=1;
    while (n<=N)
    {
        int temp=0;int flag=0;

        for(int i=0;i<vec.size();i++){//遍历总向量vec,选出第n秒跑得最快的选手
        
            int sum=sumDistance(vec[i],n);

            if(sum>temp){//因为这里的条件设置的是“>”,所以不用担心并列情况
                temp=sumDistance(vec[i],n);
                flag=i;//标记最快的选手的序号
            }
        }
        
        cout<<flag+1<<" ";
        erasevec(vec[flag]);
        n++;
    }

    return 0;

}

细节

  1. 如果vec是一个以vector<vector<int>>vec命名的二维数组,那么好像不能用vec.push_back(subVec)来添加其子向量(出现了运行时错误)

  2. 记得引用传参!!

This post is licensed under CC BY 4.0 by the author.