目錄
- 講在前面(必看)
- 八卦陣
- 題目描述
- 輸入格式
- 輸出格式
- 輸入輸出樣例
- 數據范圍
- AC代碼及要點
- 決賽應援
- 題目描述
- 輸入格式
- 輸出格式
- 輸入輸出樣例
- 數據范圍
- AC代碼及要點
講在前面(必看)
本篇為練習篇, vector講解篇在這里.
菜鳥食用前請做好心理準備(你懂的)
八卦陣
題目描述
n
名同學在演練八卦陣法!具體而言,n
名同學分別組成了 8 個隊伍,編號為 1~8,是為“八卦陣”。
然而,為使得陣法虛虛實實,同學們開始變陣啦。具體而言,一次變陣用x, y
兩個數表示,就是將x
號隊伍與y
號隊伍整體交換。
請輸出最后的陣型吧。
輸入格式
輸入共m+2
行:
第 1 行,兩個整數n
, m
,為同學人數和變陣次數;
第 2 行,n
個整數a[1], a[2], ..., a[n]
,依次為同學的編號。約定第1~8
個(即a[1], a[2], ..., a[8]
)分別屬于1~8
隊,第9~16
個同學分別屬于1~8
隊,以此類推;
之后m
行,每行兩個整數x, y
,表示本次變陣將x
號隊伍與y
號隊伍整體交換。
輸出格式
輸出共8
行:
每行依次為1,…,8
號隊伍的學員編號,每支隊伍的學員編號輸入順序排列;保證每個隊伍都有人。
輸入輸出樣例
input:
11 2
3 4 5 1 2 8 9 10 11 6 7
1 2
3 4
output:
4 6
3 11
1
5 7
2
8
9
10
數據范圍
8 ≤ n
≤ 1000;1 ≤ m
≤ 100;1 ≤ a[1], a[2], ..., a[n]
, 1000,000,000;1 ≤ x
, y
≤ 8。
AC代碼及要點
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;vector<int> q[10];int main(){int n, m;cin >> n >> m;for(int i = 0; i < n; i++){int x;cin >> x;// 分組并插入q[i % 8].push_back(x);}// 輸入并交換for(int j = 0; j < m; j++){int x, y;cin >> x >> y;swap(q[x - 1], q[y - 1]);}// 循環并輸出for(int i = 0; i < 8; i++){for(int j = 0; j < q[i].size(); j++){cout << q[i][j] << ' ';}cout << endl;}return 0;
}
本題最難點在于分組的方法, 其實用一個%取余符號就解決了.
決賽應援
題目描述
2 支籃球隊伍進入了籃球大賽決賽!每個籃球隊伍都有自己的球迷團,每位球迷都有自己的編號,約定球迷編號為奇數的支持隊伍一,偶數的支持隊伍二。
請根據 n
個球迷的編號,確定隊伍一、二的球迷團名單。
輸入格式
輸入共 2 行:
第 1 行,一個整數 n,為球迷總人數;
第 2 行,n 個整數a[1], a[2], ..., a[n]
, 依次為球迷的編號。
輸出格式
輸出 2 行:
第 1 行,隊伍一的球迷團編號,按輸入順序輸出;
第 2 行,隊伍二的球迷團編號,按輸入順序輸出。
輸入輸出樣例
input:
8
3 4 1 2 9 8 6 7
output:
3 1 9 7
4 2 8 6
數據范圍
1 ≤ n ≤ 100,000;1 ≤ a[1], a[2], ..., a[n]
≤ 100,000,000。
AC代碼及要點
#include <iostream>
#include <vector>
using namespace std;vector<int> v1, v2;int main()
{int n;cin >> n;for(int i = 0; i < n; i++){int x;cin >> x;if(x % 2 == 0) v2.push_back(x);else v1.push_back(x);}for(int i = 0; i < v1.size(); i++){cout << v1[i] << ' ';}cout << endl;for(int i = 0; i < v2.size(); i++){cout << v2[i] << ' ';}return 0;
}
這道題總體簡單, 只要注意數據分組就好了.