Acwing第46場周賽 2022-4-9
阿新 • • 發佈:2022-04-11
1.題目連結 4396.取石子
#include <iostream> #include <cstring> #include <algorithm> using namespace std; int n1, n2, k1, k2; int main() { cin >> n1 >> n2 >> k1 >> k2; if(n1 <= n2) puts("Second"); else if(n1 > n2) puts("First"); return 0; }
2.題目連結 4397.卡牌
#include <iostream> #include <cstring> #include <algorithm> #include <queue> using namespace std; const int N = 200010; int n, m; int a[N], b[N]; int ans; priority_queue<int> q; int main() { cin >> n >> m; for (int i = 1; i <= n; i ++ ) { scanf("%d", &a[i]); ans += a[i]; } for (int i = 1; i <= n; i ++ ) scanf("%d", &b[i]); for (int i = 1; i <= n; i ++ ) { int c = a[i] - b[i]; //差值越大越好 q.push(c); } // cout << ans << endl; while(q.size() > m) { auto t = q.top(); //cout << t << endl; if(t < 0) break; q.pop(); ans -= t; } printf("%d\n", ans); return 0; }
3.題目連結 4398.查詢字串
#include <iostream> #include <cstring> #include <algorithm> #include <map> #include <set> using namespace std; const int N = 10010; char str[N][10]; map<int, string> heap; map<string, int> mp; map<string, int> hs; void mp_insert(string str, int k) { set<string> st; int len = str.size(); for(int i = 0; i < len; i ++) for(int j = 1; j <= len - i; j ++) st.insert(str.substr(i, j)); for(auto x : st) mp[x] ++, hs[x] = k; } int main() { int n; cin >> n; for (int i = 1; i <= n; i ++ ) { cin >> str[i]; heap[i] = str[i]; mp_insert(str[i], i); } //for(auto [a, b] : heap) cout << a << ' ' << b << endl; //cout << endl << endl << endl; //for(auto [a, b] : mp) cout << a << ' ' << b << endl; int m; cin >> m; while (m -- ) { string s; cin >> s; if(mp.count(s)) { int t = hs[s]; cout << mp[s] << ' ' << heap[t] << endl; } else cout << "0 -" << endl; } return 0; }