比赛链接: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. 【Javaweb】给tomcat添加第三方jar包

    就是复制到lib文件夹里面 之后点击jar包右键 选择module library,点击ok就可以了

  2. 使用halo快速搭建应用文档中心

    背景 之前我写了一篇,用gitbook搭建文档中心,gitbook是一款搭建博客的技术,是静态博客技术,不带后台管理系统.不带数据库,要发文章的话,是通过提供markdown文件,渲染成html,通过 ...

  3. HTTPClients使用

    一. 创建httpclient对象用于发送get.post等请求 1. HttpClients.custom()的方式--自定义httpclient对象,多用于含有cookie的请求 1. Cooki ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (149)-- 算法导论12.2 4题

    五.用go语言,证明:如果一棵二叉搜索树中的一个结点有两个孩子,那么它的后继没有左孩子,它的前驱没有右孩子. 灵捷3.5 . 文心一言: 为了证明这个性质,我们首先需要明确二叉搜索树(BST)的定义和 ...

  5. 2分钟,快速认识什么是SQL

    结构化查询语言,简称SQL,它是与关系数据库管理系统通信的黄金标准语言.今天就来一起快速认识一下什么是SQL,您可以通过以下的文字内容学习,也可以通过文末的视频学习,希望本文对您有所帮助. 您可能听说 ...

  6. LeetCode456:132模式(单调栈)

    解题思路:根据题意,我们首先首先要找到所有的极大值点,同时记录当前极大值点的左边的最小值.遍历所有点,看是否能够满足132条件.虽然记录极大值点的地方可以优化,减小比较的次数,但是由于我们不知道极大值 ...

  7. MySQL5.7允许远程root访问

    MySQL5.7允许远程root访问 登录你的服务器MySQL mysql -u root -p MySQLroot密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@' ...

  8. 工具类图片转base64

    工具类图片转base64 import sun.misc.BASE64Encoder; import java.io.FileInputStream; import java.io.IOExcepti ...

  9. Codeforces Round 911 (Div. 2) 总结

    第一次在赛场上敲莫反,还好最后调出来了! A 题意:你在Minecraft里挖了一些一格的坑(同一列),问你用几桶水可以填满它(可以造无限水). 解法:找大于 \(2\) 的连续段,有的话就是两桶,没 ...

  10. 怎样在Facebook上开发客户

    尽管Facebook的主打社交和娱乐,但它仍是一个有助于开发外贸客户的重要平台.通过利用Facebook的广告.社群.内容分享和直接沟通等功能,您可以扩大您的业务网络,找到更多的外贸客户,并促成国际贸 ...