參考
上面的文章寫了四種方法,十分佩服大佬這種思維程度。
關鍵點:索引,stl,list(雙向鍊錶),vector(容器)
有點看不懂上面文章裡的方法二,知道個大概但是總是感覺有點懵,果斷通過方式一自己寫了乙個帶索引的解決方式。
#includeusingnamespace
std;
int pos2sno[1005]; //
位置上的學號
int sno2pos[1005]; //
學號所在位置
intmain()
for(int i = 1; i <=m ; i++)
pos2sno[pos+q] =p;
sno2pos[p] = pos+q;
} else
pos2sno[pos+q] =p;
sno2pos[p] = pos+q;}}
for(int i = 1 ; i <= n ; i++)
}
然後學習了一下list和vector的用法和區別
需要記住的是list不能隨意訪問,只能從頭或尾順序訪問。但是vector可以。
迭代器的英文:iterator
list 容器可用的成員函式
成員函式
功能begin()
返回指向容器中第乙個元素的雙向迭代器。
end()
返回指向容器中最後乙個元素所在位置的下乙個位置的雙向迭代器。
rbegin()
返回指向最後乙個元素的反向雙向迭代器。
rend()
返回指向第乙個元素所在位置前乙個位置的反向雙向迭代器。
cbegin()
和 begin() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改元素。
cend()
和 end() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改元素。
crbegin()
和 rbegin() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改元素。
crend()
和 rend() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改元素。
empty()
判斷容器中是否有元素,若無元素,則返回 true;反之,返回 false。
size()
返回當前容器實際包含的元素個數。
max_size()
返回容器所能包含元素個數的最大值。這通常是乙個很大的值,一般是 232-1,所以我們很少會用到這個函式。
front()
返回第乙個元素的引用。
back()
返回最後乙個元素的引用。
assign()
用新元素替換容器中原有內容。
emplace_front()
在容器頭部生成乙個元素。該函式和 push_front() 的功能相同,但效率更高。
push_front()
在容器頭部插入乙個元素。
pop_front()
刪除容器頭部的乙個元素。
emplace_back()
在容器尾部直接生成乙個元素。該函式和 push_back() 的功能相同,但效率更高。
push_back()
在容器尾部插入乙個元素。
pop_back()
刪除容器尾部的乙個元素。
emplace()
在容器中的指定位置插入元素。該函式和 insert() 功能相同,但效率更高。
insert()
在容器中的指定位置插入元素。
erase()
刪除容器中乙個或某區域內的元素。
swap()
交換兩個容器中的元素,必須保證這兩個容器中儲存的元素型別是相同的。
resize()
調整容器的大小。
clear()
刪除容器儲存的所有元素。
splice()
將乙個 list 容器中的元素插入到另乙個容器的指定位置。
remove(val)
刪除容器中所有等於 val 的元素。
remove_if()
刪除容器中滿足條件的元素。
unique()
刪除容器中相鄰的重複元素,只保留乙個。
merge()
合併兩個事先已排好序的 list 容器,並且合併之後的 list 容器依然是有序的。
sort()
通過更改容器中元素的位置,將它們進行排序。
reverse()
反轉容器中元素的順序。
CCF 201703 2 學生排隊
問題描述 試題編號 201703 2 試題名稱 學生排隊 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距...
CCF201703 2 學生排隊
問題描述 體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。例如,下面給出了一組移動的例子,例子中學生的人數為8人。0 初始佇列中學生的學號依次為1,2,3,4...
CCF 201703 2 學生排隊
問題描述 體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。例如,下面給出了一組移動的例子,例子中學生的人數為8人。0 初始佇列中學生的學號依次為1,2,3,4...