AtCoder Beginner Contest 218 A~D
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:50
AtCoder Beginner Contest 218 A~D
<div>
Koshkaaa
2026-01-20 15:57:33
</div>
<pre><code>void solve() {<br/>
int n = 26;<br/>
for (int i = 0, x; i < n; ++i) {<br/>
cin >> x;<br/>
cout << char('a' + x - 1);<br/>
}<br/>
}
struct node {int x, y;};
vector<node>v1, v2, v3, v4, v5;
bool cmp(node a, node b) { return a.x == b.x ? a.y < b.y : a.x < b.x; }
bool check(vector<node> a, vector<node>b) {
int n = a.size();<br/>
int lx = a[0].x - b[0].x;<br/>
int ly = a[0].y - b[0].y;<br/>
for (int i = 0; i < n; i++) {<br/>
if (a[i].x - b[i].x != lx) return false;<br/>
if (a[i].y - b[i].y != ly) return false;<br/>
}<br/>
return true;<br/>
}
void solve() {
int n; cin >> n;<br/>
for (int i = 1; i <= n; ++i)<br/>
for (int j = 1; j <= n; ++j) {<br/>
char c; cin >> c;<br/>
if (c == '#') {<br/>
v1.push_back({i, j});<br/>
v2.push_back({j, n - i + 1});<br/>
v3.push_back({n - j + 1, i});<br/>
v5.push_back({n - i + 1, n - j + 1});<br/>
}<br/>
}<br/>
for (int i = 1; i <= n; ++i)<br/>
for (int j = 1; j <= n; ++j) {<br/>
char c; cin >> c;<br/>
if (c == '#')<br/>
v4.push_back({i, j});<br/>
}<br/>
if (v1.size() != v4.size()) {cout << "No\n"; return ;}<br/>
if (v1.size() == 0 and v2.size() == 0) {cout << "Yes\n"; return ;}<br/>
sort(v1.begin(), v1.end(), cmp);<br/>
sort(v2.begin(), v2.end(), cmp);<br/>
sort(v3.begin(), v3.end(), cmp);<br/>
sort(v4.begin(), v4.end(), cmp);<br/>
sort(v5.begin(), v5.end(), cmp);<br/>
int f = 0;<br/>
if (check(v1, v4)) f = 1;<br/>
if (check(v2, v4)) f = 1;<br/>
if (check(v3, v4)) f = 1;<br/>
if (check(v5, v4)) f = 1;<br/>
cout << (f ? "Yes\n" : "No\n");<br/>
}
struct node {
int x, y;<br/>
bool operator <(const node &nd) const {<br/>
if (x == nd.x) return y < nd.y;<br/>
else return x < nd.x;<br/>
}<br/>
};
void solve() {
int n; cin >> n;<br/>
int x[n + 1], y[n + 1];<br/>
map<node, int>mp;<br/>
for (int i = 1; i <= n; i++)<br/>
cin >> x[i] >> y[i], mp[(node) {x[i], y[i]}] = 1; //记录节点<br/>
ll cnt = 0;<br/>
for (int i = 1; i <= n; ++i)<br/>
for (int j = i + 1; j <= n; ++j) {<br/>
if (x[i] == x[j] || y[i] == y[j]) continue;<br/>
if (mp[(node) {x[i], y[j]}] == 1 and mp[(node) {x[j], y[i]}] == 1) cnt += 1;<br/>
}<br/>
cout << cnt / 2 << "\n";<br/>
}
<div>





