1421A. XORwice
題目連結: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