Educational Codeforces Round 157 (A--D)视频详解
- 视频链接
- A题代码
- B题代码
- C题代码
- D题代码
视频链接
Educational Codeforces Round 157 (A–D)视频详解
A题代码
#include<bits/stdc++.h>
#define endl '\n'
#define deb(x) cout << #x << " = " << x << '\n';
#define INF 0x3f3f3f3f
using namespace std;
int x, y, k;void solve()
{cin >> x >> y >> k;if(x >= y){cout << x << endl;return;}else{cout << y + (max(y - x - k, 0)) << endl;return;}}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;//t = 1;cin >> t;while(t--)solve();
}
B题代码
#include<bits/stdc++.h>
#define endl '\n'
#define deb(x) cout << #x << " = " << x << '\n';
#define INF 0x3f3f3f3f
using namespace std;void solve()
{int n;cin >> n;vector<int>a(2 * n);for(int i = 0; i < 2 * n; i ++)cin >> a[i];sort(a.begin(), a.end());cout << abs(a[n - 1] - a[0]) + abs(a[2 * n - 1] - a[n]) << endl;for(int i = 0; i < n; i ++)cout << a[i] << " " << a[n + i] << endl;}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;//t = 1;cin >> t;while(t--)solve();
}
C题代码
#include<bits/stdc++.h>
#define endl '\n'
#define deb(x) cout << #x << " = " << x << '\n';
#define INF 0x3f3f3f3f
#define int long long
using namespace std;map<int,map<int,int>>cnt;int GetInt(string s)
{int res = 0;for(int i = 0; i < s.size(); i ++)res += s[i] - '0';return res;
}void solve()
{int n;cin >> n;vector<string>s(n);for(int i = 0; i < n; i ++){cin >> s[i];cnt[GetInt(s[i])][s[i].size()] ++;}int ans = 0;for(int i = 0; i < n; i ++){for(int j = 0; j < s[i].size(); j ++){string str1 = s[i].substr(0, j + 1);string str2 = s[i].substr(j + 1);int s1 = GetInt(str1);int a1 = GetInt(str2);ans += cnt[s1 - a1][str1.size() - str2.size()];int s2 = GetInt(str2);int a2 = GetInt(str1);ans += cnt[s2 - a2][str2.size() - str1.size()];}}cout << ans << endl;
}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t = 1;//cin >> t;while(t--)solve();
}
D题代码
#include<bits/stdc++.h>
#define endl '\n'
#define deb(x) cout << #x << " = " << x << '\n';
#define INF 0x3f3f3f3f
using namespace std;
const int N = 2e5 + 10;
int a[N], c[N];
int son[N * 31][2], idx;
int n;void insert(int x)
{int p = 0;for(int i = 30; i >= 0; i -- ){int t = x >> i & 1;if(!son[p][t])son[p][t] = ++ idx;p = son[p][t];}
}int query(int x)
{int p = 0, res = 0;for(int i = 30; i >= 0; i --){int t = x >> i & 1;if(son[p][!t])res = (res << 1) + !t, p = son[p][!t];elseres = (res << 1) + t, p = son[p][t];}return res;
}void solve()
{cin >> n;for(int i = 1; i <= n - 1; i ++){cin >> a[i], c[i] = c[i - 1] ^ a[i];insert(c[i]);}int b = INF;for(int i = 0; i < n; i ++){if((query(i) ^ i) <= n - 1){//deb((query(i) ^ i));b = i;break;}}cout << b << " ";for(int i = 1; i <= n - 1; i ++){cout << (b ^ c[i]) << " ";}cout << endl;
}signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t = 1;//cin >> t;while(t--)solve();
}