比赛链接:Here

A - Weather Forecas

水题,判断 \(s[n - 1] = o\) 的话输出 YES

B - qwerty

题意:给出 \((1,2,...,26)\) 的某个全排列 \(p\) ,请对于 \(1\le i \le 26\) 的每个 \(p_i\) ,输出第 \(p_i\) 个小写字母

void solve() {
int n = 26;
for (int i = 0, x; i < n; ++i) {
cin >> x;
cout << char('a' + x - 1);
}
}

C - Shapes

题意:在 \(n\times n\) 的二维空间中有 \(S,T\) 两个图形,问能否经过任意次旋转 \(90°\) 和平移操作,使两图形相等?

数据范围:\(1\le N\le 200\)

思路:

可以把 \(S\)​​ 和三种旋转出来的图形的 \(\#\)​​ 的坐标分别存在 \(4\)​​ 个 \(vector\)​ 里 然后 \(x\)​ 优先 \(y\)​ 次优先排个序

然后把 \(T\)​ 的所有 \(\#\)​ 的坐标也放到 \(vector\)​ 里排序

因为要是 yes 的话 \(T\)​ 肯定是 \(S\)​ 的 \(4\)​ 个 \(vector\) 中的其中一个 \(vector\) 平移出来的

那枚举每个 \(S\) 的 \(vector\) 和 \(T\) 的 \(vector\) 每个点的 \(x\) 都相减 如果得出来的值都一样

再把 \(y\) 也做同样操作 如果也相同 那么就是平移出来的就是 yes ,如果旋转出来的所有情况都无法平移到 \(T\) 就输出No

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();
int lx = a[0].x - b[0].x;
int ly = a[0].y - b[0].y;
for (int i = 0; i < n; i++) {
if (a[i].x - b[i].x != lx) return false;
if (a[i].y - b[i].y != ly) return false;
}
return true;
}
void solve() {
int n; cin >> n;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j) {
char c; cin >> c;
if (c == '#') {
v1.push_back({i, j});
v2.push_back({j, n - i + 1});
v3.push_back({n - j + 1, i});
v5.push_back({n - i + 1, n - j + 1});
}
}
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j) {
char c; cin >> c;
if (c == '#')
v4.push_back({i, j});
}
if (v1.size() != v4.size()) {cout << "No\n"; return ;}
if (v1.size() == 0 and v2.size() == 0) {cout << "Yes\n"; return ;}
sort(v1.begin(), v1.end(), cmp);
sort(v2.begin(), v2.end(), cmp);
sort(v3.begin(), v3.end(), cmp);
sort(v4.begin(), v4.end(), cmp);
sort(v5.begin(), v5.end(), cmp);
int f = 0;
if (check(v1, v4)) f = 1;
if (check(v2, v4)) f = 1;
if (check(v3, v4)) f = 1;
if (check(v5, v4)) f = 1;
cout << (f ? "Yes\n" : "No\n");
}

D - Rectangles

题意:已知二维平面上 \(n\le 2000\) 个点,求能构成边平行于坐标轴的矩形的个数。

数据范围:\(0\le x_i,y_i\le 1e9,(x_i,y_i) \not=(x_j,y_j)(i\not=j)\)

思路:枚举两个点作为矩形的对角线,并检查另外两个点是否也在平面上。

这样一来,一个矩形会被计算两次(两条对角线),所以答案要除以 \(2\)。

struct node {
int x, y;
bool operator <(const node &nd) const {
if (x == nd.x) return y < nd.y;
else return x < nd.x;
}
};
void solve() {
int n; cin >> n;
int x[n + 1], y[n + 1];
map<node, int>mp;
for (int i = 1; i <= n; i++)
cin >> x[i] >> y[i], mp[(node) {x[i], y[i]}] = 1; //记录节点
ll cnt = 0;
for (int i = 1; i <= n; ++i)
for (int j = i + 1; j <= n; ++j) {
if (x[i] == x[j] || y[i] == y[j]) continue;
if (mp[(node) {x[i], y[j]}] == 1 and mp[(node) {x[j], y[i]}] == 1) cnt += 1;
}
cout << cnt / 2 << "\n";
}

EFG待补

AtCoder Beginner Contest 218 A~D的更多相关文章

  1. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  2. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  3. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  4. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  5. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  6. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  7. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  8. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

  9. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

  10. AtCoder Beginner Contest 075 C bridge【图论求桥】

    AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...

随机推荐

  1. C/C++ 常用加密与解密算法

    计算机安全和数据隐私是现代应用程序设计中至关重要的方面.为了确保数据的机密性和完整性,常常需要使用加密和解密算法.C++是一种广泛使用的编程语言,提供了许多加密和解密算法的实现.本文将介绍一些在C++ ...

  2. Llinux登录后出现-bash-4.2#,解决办法以及造成这样的原因

    版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin 1.原因是root在/root下面的几个配置文件丢失,丢失文件如下: 1..bash_profile 2..bashr ...

  3. springboot集成mybatis-plus

    集成mybatis-plus 1.添加pom.xml <!--mp逆向工程 --> <dependency> <groupId>org.projectlombok& ...

  4. 月薪3w的报表工程师要会哪些技能?报表工程师的招聘要求解读

    对于月薪3w的报表工程师,通常需要具备以下技能: 1. 数据分析与处理 - 数据仓库:了解数据仓库的设计原则和架构,能够构建和优化数据仓库结构. - SQL语言:熟练掌握SQL查询语言,能够编写复杂的 ...

  5. 【漏洞分析】Reflection Token 反射型代币攻击事件通用分析思路

    在本篇文章中,我将通过一个攻击事件引出 Reflection Token 攻击事件的一个通用分析思路. 关于 Reflection Token 的其他案例分析,可以参考BEVO代币攻击事件分析及复现一 ...

  6. 华企盾DSC邮件发送成功,但是不解密也没有任何提示(未添加白名单)

    用Debugview监控整个过程,若日志中有信任邮箱未添加说明,白名单邮箱未添加或者添加错了(检查空格之类的或重新添加)

  7. Ubuntu部署NTP服务器和客户端

    https://www.cnblogs.com/lsgxeva/p/14265513.html Ubuntu部署NTP服务器和客户端 NTP或网络时间协议是一种协议,用于将网络中的所有系统时钟同步以使 ...

  8. 扩展 jQurey.i18n.properties 的能力来向 vue-i18n 靠齐

    jQuery.i18n.properties 是 jQuery 老项目的国际化框架,其实国际化方案本质上都大同小异,都是需要用翻译函数包裹词条,然后根据词条文件来进行翻译 就是使用上与其他框架不太一样 ...

  9. Java 并发编程(五)读写锁

    本文使用的 JDK 版本为 JDK 8 JUC 中关于读写锁的接口定义如下: // java.util.concurrent.locks.ReadWriteLock public interface ...

  10. 21、Scaffold属性 FloatingActionButton实现类似闲鱼App底 部导航凸起按钮

    FloatingActionButton详解 FloatingActionButton简称FAB ,可以实现浮动按钮,也可以实现类似闲鱼app的底部凸起导航   实现类似闲鱼App底部导航凸起按钮 c ...