A - Large Digits
按要求求出两个数的每位之和,进行比较即可。
时间复杂度 )#card=math&code=%5Cmathcal%7BO%7D%28%5Clog%28AB%29%29)。
B - Gentle Pairs
枚举所有点对求斜率。
时间复杂度 #card=math&code=%5Cmathcal%7BO%7D%28N%5E2%29)。
int main() {ios_base::sync_with_stdio(false), cin.tie(0);int n;cin >> n;int x[1010], y[1010];int cnt = 0;for (int i = 0; i < n; ++i) {cin >> x[i] >> y[i];}for (int i = 0; i < n; ++i)for (int j = 0; j < n; ++j) {if (i != j)if (abs(y[i] - y[j]) <= abs(x[i] - x[j])) cnt++;}cout << cnt / 2 << "\n";return 0;}
C - 1-SAT
用两个HashSet分别存储不带!和带!的字符串的纯字符部分,求两个HashSet的交集。若有交集,则输出其中任意一个字符串;否则按要求输出satisfiable。
时间复杂度 #card=math&code=%5Cmathcal%7BO%7D%28N%29)。
int main() {ios_base::sync_with_stdio(false), cin.tie(0);int n;cin >> n;string s;unordered_set<string> s1, s2;for (int i = 0; i < n; ++i) {cin >> s;if (s[0] == '!') s1.insert(s.substr(1));elses2.insert(s);}for (auto x : s1) {if (s2.count(x)) {cout << x << "\n";return 0;}}cout << "satisfiable\n";return 0;}
D - Choose Me
将所有城镇按照降序排列,然后贪心选取即可。
时间复杂度 #card=math&code=%5Cmathcal%7BO%7D%28N%5Clog%20N%29)。
using ll = long long;int main() {ios_base::sync_with_stdio(false), cin.tie(0);int n;cin >> n;vector<pair<ll, ll>> towns;ll sa = 0, sb = 0; // T,Afor (int i = 0; i < n; ++i) {int a, b;cin >> a >> b;towns.emplace_back(a, b);sa += a;}sort(towns.begin(), towns.end(), [](pair<ll, ll>& p, pair<ll, ll>& q) {return p.first * 2 + p.second > q.first * 2 + q.second;});for (int i = 0; i < n; ++i) {if (sa < sb) {cout << i << "\n";return 0;}sa -= towns[i].first, sb += towns[i].first + towns[i].second;}cout << n << "\n";return 0;}

