【vector+pair】洛谷 P4715 【深基16.例1】淘汰赛
题目:P4715 【深基16.例1】淘汰赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
这道题因为数据范围不大,所以做法可以非常简单,使用一个vector加上pair就可以了;
(实际上可以预处理2的次方数,但因为懒就直接用pow()了)
做法就是每次按顺序比较当前国家数的一半次,期间输掉的国家直接用erase()踢掉!
代码:
#include <iostream> #include <cmath> #include <vector> using namespace std; typedef long long ll; vector<pair<int, int>> a; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; int nn = pow(2, n); for (int i = 1; i <= nn; ++i) { int t; cin >> t; a.push_back(make_pair(t, i)); } for (int i = n - 1; i >= 1; --i) { for (int j = 0; j < pow(2, i); ++j) { if (a[j].first > a[j + 1].first) a.erase(a.begin() + j + 1); else a.erase(a.begin() + j); } } if (a[0].first > a[1].first) cout << a[1].second << endl; else cout << a[0].second << endl; return 0; }