标签:time lse duplex names guess map c++ 输出 coder
比赛链接:https://atcoder.jp/contests/abc157
计算 $n$ 页的文档双面打印要用多少张纸。
答案即 $\lceil \frac{n}{2} \rceil$ 。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n; cin >> n;
cout << (n + 1) / 2;
}
给出一个 $3\times3$ 的方格,方格中的数互不相同,给出 $n$ 个互不相同的数,判断其中在方格中出现的数是否位于方格的同一行、或同一列、或同一对角线中。
模拟即可。
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, pair<int, int>> mp;
int a[3][3] = {};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cin >> a[i][j];
mp[a[i][j]] = {i, j};
}
}
int row[3] = {};
int col[3] = {};
int diago[3] = {};
int n; cin >> n;
for (int i = 0; i < n; i++) {
int x; cin >> x;
if (mp.count(x)) {
++row[mp[x].first];
++col[mp[x].second];
if (mp[x].first == mp[x].second)
++diago[0];
if (mp[x].first + mp[x].second == 2)
++diago[1];
}
}
bool ok = false;
for (int i = 0; i < 3; i++) {
ok |= row[i] == 3;
ok |= col[i] == 3;
ok |= diago[i] == 3;
}
cout << (ok ? "Yes" : "No");
}
输出一个 $n$ 位长的最小数,要求每一指定位都为指定数字,除了 $0$ 以外不可以出现前导零。
模拟即可。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m; cin >> n >> m;
bool ok = true;
string ans(n, ‘0‘);
bool used[n] = {};
for (int i = 0; i < m; i++) {
int s; cin >> s;
char c; cin >> c;
if (!used[s - 1]) {
ans[s - 1] = c;
used[s - 1] = true;
} else if (ans[s - 1] != c) {
ok = false;
}
}
if (n > 1 and ans[0] == ‘0‘) {
if (used[0]) ok = false;
else ans[0] = ‘1‘;
}
cout << (ok ? ans : "-1");
}
并查集,待填。
标签:time lse duplex names guess map c++ 输出 coder
原文地址:https://www.cnblogs.com/Kanoon/p/12940465.html