A - Rotate

先输出第二和第三个字符,然后再输出第一个字符即可

B - Visibility

以 \((x,y)\) 作为起点向4个方向探索不是 # 的点,注意一下会在\((x,y)\)重复计算 \(3\) 次,所以要 cnt - 3

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int H, W, X, Y;
cin >> H >> W >> X >> Y;
X -= 1, Y -= 1;
vector<string> s(H);
for (int i = 0; i < H; ++i) cin >> s[i];
int cnt = 0;
// 向 4 个方向探索
for (int i = X; i < H and s[i][Y] != '#'; ++i) cnt++;
for (int i = X; i >= 0 and s[i][Y] != '#'; --i) cnt++;
for (int i = Y; i < W and s[X][i] != '#'; ++i) cnt++;
for (int i = Y; i >= 0 and s[X][i] != '#'; --i) cnt++;
cout << cnt - 3 << "\n";
return 0;
}

C - ORXOR Editorial

Good,位运算典型题

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int n;
cin >> n;
vector<int> a(n);
for (int& x : a) cin >> x;
int ans = INT_MAX;
for (int i = 0; i < (1 << (n - 1)); ++i) {
int xored = 0, ored = 0;
for (int j = 0; j <= n; ++j) {
if (j < n) ored |= a[j];
if (j == n || (i >> j & 1)) xored ^= ored, ored = 0;
}
ans = min(ans, xored);
}
cout << ans << "\n";
return 0;
}

D - Opposite

// C++似乎内置了 PI 也可以不定义 M_PI
#define M_PI 3.14159265358979323846
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int N;
double xx, yy, x, y;
cin >> N >> xx >> yy >> x >> y;
double a = (xx + x) / 2, b = (yy + y) / 2;
xx -= a, yy -= b;
double m = xx * cos(2 * M_PI / N) - yy * sin(2 * M_PI / N);
double n = xx * sin(2 * M_PI / N) + yy * cos(2 * M_PI / N);
cout << fixed << setprecision(12) << m + a << "\n" << n + b;
return 0;
}

E - Traveler

很好的处理方法

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e5 + 7;
vector<int> v[N];
ll l[N], r[N];
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int n;
cin >> n;
for (int i = 0, x, c; i < n; ++i) {
cin >> x >> c;
v[c].push_back(x);
}
v[0].push_back(0);
v[n + 1].push_back(0); // int ans = 0;
for (int i = 1, j = 0; i <= n + 1; ++i) {
if (v[i].empty()) continue;
sort(v[i].begin(), v[i].end());
int lx = v[i].front(), rx = v[i].back();
int ly = v[j].front(), ry = v[j].back();
// cout << lx << " " << rx << "\n";
l[i] = min(abs(rx - ly) + l[j], abs(rx - ry) + r[j]) + rx - lx;
r[i] = min(abs(lx - ly) + l[j], abs(lx - ry) + r[j]) + rx - lx;
// ans = min(l[i], r[i]);
j = i;
} cout << min(l[n + 1], r[n + 1]) << "\n";
return 0;
}

F - Construct a Palindrome

#include <bits/stdc++.h>
using namespace std;
const int N = 1002;
int n, m;
char s[2];
struct node {
int s, t, sp;
} r;
queue<node> q;
vector<int> a[N][26];
int ans = 1e9, vis[N][N];
//把边看成点
//对于两对边(a,b) (c,d)
//如果(a,c) 和 (b,c)之间存在边 而且边上的字母相同的话
//那么这两个边变成的点就可以联通
int bfs() {
while (!q.empty()) {
r = q.front();
q.pop();
if (r.sp == ans) return ans << 1;
for (int i = 0; i < 26; ++i)
for (int j = 0; j < a[r.s][i].size(); ++j)
for (int k = 0; k < a[r.t][i].size(); ++k) {
int ns = a[r.s][i][j];
int nt = a[r.t][i][k];
if (ns == r.t || nt == r.s) return r.sp << 1 | 1;
if (ns == nt) ans = r.sp + 1;
if (vis[ns][nt]) continue;
vis[ns][nt] = 1;
q.push((node){ns, nt, r.sp + 1});
}
}
return -1;
}
int main() {
scanf("%d%d", &n, &m);
for (int x, y; m; --m) {
scanf("%d%d%s", &x, &y, s);
a[x][*s - 'a'].push_back(y);
a[y][*s - 'a'].push_back(x);
}
vis[1][n] = 1;
q.push((node){1, n, 0});
printf("%d", bfs());
}

AtCoder Beginner Contest 197(Sponsored by Panasonic) Person Editorial的更多相关文章

  1. Atcoder Beginner Contest 121D(异或公式)

    #include<bits/stdc++.h>using namespace std;int main(){    long long a,b;    cin>>a>&g ...

  2. Atcoder Beginner Contest 147D(按位处理)

    把每个数字每一位上二进制数字取出,求答案时直接用N个数里这一位是0的个数乘上这一位是1的个数然后乘上二的这一位次方,注意所有可能溢出的地方都要对mod取模. #define HAVE_STRUCT_T ...

  3. Atcoder Beginner Contest 140E(多重集,思维)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;multiset<long long&g ...

  4. Atcoder Beginner Contest 139E(模拟,思维)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;int n;int a[1007][1007] ...

  5. 数学--数论-- AtCoder Beginner Contest 151(组合数+数学推导)好题(๑•̀ㅂ•́)و✧

    思路统计最大值出现的次数,和最小值出现的次数.虽然是每次都是MAX-MIN,我们先求MAX的和,然后再求MIN的和,做差. 这次代码写的真的很漂亮 题目地址: #include <bits/st ...

  6. AtCoder Beginner Contest 254(D-E)

    Tasks - AtCoder Beginner Contest 254 D - Together Square 题意: 给定一个N,找出所有不超过N的 ( i , j ),使得( i * j )是一 ...

  7. AtCoder Beginner Contest 086 (ABCD)

    A - Product 题目链接:https://abc086.contest.atcoder.jp/tasks/abc086_a Time limit : 2sec / Memory limit : ...

  8. AtCoder Beginner Contest 085(ABCD)

    A - Already 2018 题目链接:https://abc085.contest.atcoder.jp/tasks/abc085_a Time limit : 2sec / Memory li ...

  9. AtCoder Beginner Contest 084(AB)

    A - New Year 题目链接:https://abc084.contest.atcoder.jp/tasks/abc084_a Time limit : 2sec / Memory limit  ...

  10. AtCoder Beginner Contest 083 (AB)

    A - Libra 题目链接:https://abc083.contest.atcoder.jp/tasks/abc083_a Time limit : 2sec / Memory limit : 2 ...

随机推荐

  1. 7 HTTP 的报文

    目录 1 报文结构 TCP的报文 HTTP协议的报文 2 请求行:request line 3 状态行:status line 4 头部字段 5 常用头字段 基本的头信息 1. Host 字段(必须) ...

  2. 【Postman&JMeter】使用Postman和JMeter进行signature签名

    使用Postman和JMeter进行signature签名 目录 使用Postman和JMeter进行signature签名 一.前言 二.v0接口 1.Postman 2.JMeter 三.v1接口 ...

  3. 数字孪生和GIS融合后能够为城市交通带来哪些便利?

    数字孪生和GIS的融合对于城市交通领域带来了诸多便利,从智能交通管理到出行体验的提升,为城市交通带来了全新的发展机遇. 首先,数字孪生技术与GIS的结合可以实现智能交通管理.通过GIS建立城市交通网络 ...

  4. @Conditional+@Configuration有没有搞头?

    日拱一卒,功不唐捐. 在了解 @Conditional 之前先花 10 秒钟复习一下 @Configuration 这个注解. @Configuration 是干什么? 是配合 @Bean 注解来配置 ...

  5. 调试分析Linux 0.00引导程序

    Bochs虚拟机的配置文件 简介 Bochs 虚拟机的配置文件 描述待启动的虚拟机的配置,例如内存大小.启动镜像.网络功能.存储配置. Bochs运行后,会先查找配置文件,解析模拟器要虚拟的系统相关信 ...

  6. vue音频(监听播放完成)

    <template> <div> <audio ref="audio" :src="audioSrc"></audio ...

  7. Java 插入、隐藏/显示、删除Excel行或列

    概述 操作Excel工作表时,对表格中的行或列数据可执行,包括插入.隐藏.显示.删除等在内的多种操作需求,本文将通过Java代码示例演示每种操作的具体实现方法.文中方法使用了Java Excel类库( ...

  8. 聆听无声的话语:手把手教你用ModelArts实现手语识别

    摘要:ModelArts,化作我们与听力障碍之间的一座沟通桥梁. 据统计,我国有超过2000万人有听力语言障碍,每年有约3万名婴儿生来就失去了聆听的机会.或许是因为缺少与没有听力障碍的人交流的途径,环 ...

  9. 详解Apache Sentry->Ranger平滑升级方案

    摘要:本文主要探讨如何平滑解决sentry到ranger升级过程中的权限迁移问题. 本文分享自华为云社区<[平滑上云]Apache Sentry->Ranger平滑升级方案>,作者: ...

  10. 看故事学Redis:再不懂,我怀疑你是假个开发

    摘要:还不懂Redis?看完这个故事就明白了! 本文转载自博客园社区<还不懂Redis?看完这个故事就明白了!>,作者:轩辕之风 我是Redis 你好,我是Redis,一个叫Antirez ...