CCF計算機認證考試201703 2 學生排隊解析

2021-09-27 02:11:05 字數 1475 閱讀 9528

體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。

例如,下面給出了一組移動的例子,例子中學生的人數為8人。

0)初始佇列中學生的學號依次為1, 2, 3, 4, 5, 6, 7, 8;

1)第一次調整,命令為「3號同學向後移動2」,表示3號同學出隊,向後移動2名同學的距離,再插入到佇列中,新佇列中學生的學號依次為1, 2, 4, 5, 3, 6, 7, 8;

2)第二次調整,命令為「8號同學向前移動3」,表示8號同學出隊,向前移動3名同學的距離,再插入到佇列中,新佇列中學生的學號依次為1, 2, 4, 5, 8, 3, 6, 7;

3)第三次調整,命令為「3號同學向前移動2」,表示3號同學出隊,向前移動2名同學的距離,再插入到佇列中,新佇列中學生的學號依次為1, 2, 4, 3, 5, 8, 6, 7。

小明記錄了所有調整的過程,請問,最終從前向後所有學生的學號依次是多少?

請特別注意,上述移動過程中所涉及的號碼指的是學號,而不是在隊伍中的位置。在向後移動時,移動的距離不超過對應同學後面的人數,如果向後移動的距離正好等於對應同學後面的人數則該同學會移動到佇列的最後面。在向前移動時,移動的距離不超過對應同學前面的人數,如果向前移動的距離正好等於對應同學前面的人數則該同學會移動到佇列的最前面。

輸入的第一行包含乙個整數n,表示學生的數量,學生的學號由1到n編號。

第二行包含乙個整數m,表示調整的次數。

接下來m行,每行兩個整數p, q,如果q為正,表示學號為p的同學向後移動q,如果q為負,表示學號為p的同學向前移動-q。

輸出一行,包含n個整數,相鄰兩個整數之間由乙個空格分隔,表示最終從前向後所有學生的學號。

8

33 2

8 -3

3 -2

1 2 4 3 5 8 6 7
對於所有評測用例,1 ≤ n ≤ 1000,1 ≤ m ≤ 1000,所有移動均合法。

#include

#define maxn 1005

using namespace std;

int stu[maxn][1

];intmain()

while

(m--)}

for(

int i =

0; i < n; i++

) stu[i + stup][0

]= tumpstu;}}

}if(stup <0)

}for

(int i =

0; i < n; i++

) stu[i - stup][0

]= tumpstu;}}

}}for(

int i =

0; i < n; i++

)return0;

}

CCF計算機職業資格認證2016 12 1

試題編號 201612 1 試題名稱 中間數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 在乙個整數序列a1,a2,an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。給定乙個整數序列,請找...

首屆CCF計算機職業資格認證考試題解(C )

試題編號 201312 1 時間限制 1.0s 記憶體限制 256.0mb 給定n個正整數,找出它們中出現次數最多的數。如果這樣的數有多個,請輸出其中最小的乙個。輸入的第一行只有乙個正整數n 1 n 1000 表示數字的個數。輸入的第二行有n個整數s1,s2,sn 1 si 10000,1 i n ...

CCF認證考試 報數

這道題主要的目的是輸出甲乙丙丁所跳過的數,他們報數的順序都是甲乙丙丁 甲乙丙丁 這樣迴圈的,所以思路也很簡單,就是從1開始遍歷,直到報數的數目 n。我這裡設計了兩個計數器,乙個是用來記遍歷的數 total 乙個是記所報的數的數量 i 在遍歷的過程中,如果total滿足跳過的條件,就讓total來對4...