Codeforces Round #676 (Div. 2) A - D个人题解(E题待补)

题目链接:Click Here

// Author : RioTian // Time : 20/10/18 #include <bits/stdc++.h> #define ms(a, b) memset(a, b, sizeof a) using namespace std; typedef long long ll; ll n, m, _; void solve() { cin >> n >> m; cout << (n ^ m) << endl; } int main() { // freopen("in.txt", "r", stdin); ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); cin >> _; while (_--) solve(); } 1421B. Putting Bricks in the Wall

题目链接:Click Here

如果选择S的邻居为1,我们就可以F使为0的邻居,就没有办法从S到F,但这在最坏的情况下需要4个开关,这是不够的。 幸运的是,为了减少到2个开关,只需反过来考虑,使相邻S的正方形变为0,使相邻的正方形变为F 1。必须存在最多具有两个开关的两个正方形的解,并且您不会从S到F,因为被迫选择1(或0),并且无法通过与F相反的邻居。

// Author : RioTian // Time : 20/10/18 #include <bits/stdc++.h> #define ms(a, b) memset(a, b, sizeof a) using namespace std; typedef long long ll; ll n, m, _; char x[210][210]; void solve() { cin >> n; for (int i = 1; i <= n; i++) cin >> x[i] + 1; int a = x[1][2] - '0', b = x[2][1] - '0', c = x[n][n - 1] - '0', d = x[n - 1][n] - '0'; if (a == b && c == d && a != c) cout << 0 << endl; else if (a != b && c != d) cout << 2 << endl << 1 << " " << 2 << endl << (a == c ? n - 1 : n) << " " << (a == c ? n : n - 1) << endl; else if (a != b) cout << 1 << endl << (a == c ? 1 : 2) << ' ' << (a == c ? 2 : 1) << endl; else if (c != d) cout << 1 << endl << (a == c ? n : n - 1) << ' ' << (a == c ? n - 1 : n) << endl; else cout << 2 << endl << 1 << ' ' << 2 << endl << 2 << " " << 1 << endl; } int main() { // freopen("in.txt", "r", stdin); ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); cin >> _; while (_--) solve(); } #python import sys input = sys.stdin.readline I = lambda : list(map(int,input().split())) t,=I() for _ in range(t): n,=I() l=[input().strip() for i in range(n)] an=[] le=[0,0,1,1,1];p=[1,1,0,0,0] rq=[l[0][1],l[1][0],l[1][1],l[2][0],l[0][2]] pos=[[1,2],[2,1],[2,2],[3,1],[1,3]] ct=cp=0;a1=[] for i in range(5): if le[i]!=int(rq[i]): ct+=1 a1.append(pos[i]) for i in range(5): if p[i]!=int(rq[i]): cp+=1 an.append(pos[i]) if ct<=cp: an=a1 print(len(an)) for i in an: print(*i) 1421C. Palindromifier

题目链接:Click Here

这道题写的挺懵的,一开始都没理解题意

被dalao提醒以后然后发现是构造题,根据题目说的两种方案:

对于任何字符串都可以先 $L ,i = 2 \(,然后\)R,i = 2 $ + \(R, i = 7\)。一定能构造需所需的字符串

// Author : RioTian // Time : 20/10/18 #include <bits/stdc++.h> using namespace std; typedef long long ll; string s; int main() { // freopen("in.txt","r",stdin); ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); cin >> s; cout << "3\nL 2\nR 2\n"; cout << "R " << 2 * s.size() - 1 << endl; } print('3\nL 2\nR 2\nR',len(input())*2-1) 1421D. Hexagons (补)

题目链接:Click Here

// Author : RioTian // Time : 20/10/18 #include <bits/stdc++.h> using namespace std; #define ll long long int inf = 1e9 + 7; ll x, y, c1, c2, c3, c4, c5, c6; ll check(ll ad) { ll ans = 0; if (ad > 0) ans += ad * c1; else ans += -ad * c4; if (x - ad > 0) ans += (x - ad) * c6; else ans += (ad - x) * c3; if (y - ad > 0) ans += (y - ad) * c2; else ans += (ad - y) * c5; return ans; } void solve() { cin >> x >> y >> c1 >> c2 >> c3 >> c4 >> c5 >> c6; ll l = -inf, r = inf; while (l < r) { ll mid = l + r >> 1; if (check(mid) < check(mid + 1)) r = mid; else l = mid + 1; } cout << min({check(l), check(l + 1), check(l - 1)}) << '\n'; } int main() { int t; cin >> t; while (t--) solve(); } 1421E. Swedish Heroes (补)

题目链接:Click Here

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdywg.html