A - Doors in the Center

签到题,直接构造即可。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10; signed main() {
int n;
cin >> n;
if (n % 2 == 1) {
for (int i = 1; i <= n / 2; i++) {
cout << '-';
}
cout << "=";
for (int i = 1; i <= n / 2; i++) {
cout << '-';
}
} else {
for (int i = 1; i <= n / 2 - 1; i++) {
cout << '-';
}
cout << "==";
for (int i = 1; i <= n / 2 - 1; i++) {
cout << '-';
}
}
}
/*
*/

B - Full House 3

有两种三个以上的相同的或者一种三个以上相同一种两个以上相同便可以满足葫芦的条件。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10; signed main() {
int n = 7;
map<int, int> mp;
set<int> se;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
mp[x]++;
se.insert(x);
}
int f = 0, ff = 0;
for (auto t : se) {
if (mp[t] >= 3) f++;
else if (mp[t] >= 2) ff++;
}
if (f >= 2 || (f == 1 && ff >= 1)) {
cout << "Yes\n";
} else {
cout << "No\n";
}
}
/*
*/

C - Uniqueness

暴力枚举。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10; signed main() {
int n;
cin >> n;
map<int, int> mp;
vector<int> a(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
mp[a[i]]++;
}
int ans = -1, id = -1;
for (int i = 1; i <= n; i++) {
if (mp[a[i]] == 1) {
if (a[i] > ans) {
ans = a[i];
id = i;
}
}
}
cout << id << '\n';
}
/*
*/

D - Bonfire

\((0,0)\)点每次都会刷新新的烟雾,对于每次移动是否可以覆盖高桥只需要看前面哪个刷新的烟雾可以到达高桥,如果有则是1,没有则是0。

实现上可以用两个\(sum\)数组记录东西和南北的移动量,二分去查找。

当然其实也有实现更简便的方法。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, r, c;
cin >> n >> r >> c;
string s;
cin >> s;
//n r-1
//w c-1
//s r+1
//e c+1
s = ' ' + s;
vector<int> sum1(n + 1), sum2(n + 1);
for (int i = 1; i <= n; i++) {
sum1[i] = sum1[i - 1], sum2[i] = sum2[i - 1];
if (s[i] == 'N') sum1[i] -= 1;
if (s[i] == 'S') sum1[i] += 1;
if (s[i] == 'W') sum2[i] -= 1;
if (s[i] == 'E') sum2[i] += 1;
}
// for (int i = 1; i <= n; i++) {
// cout << sum1[i] << " \n"[i == n];
// }
// for (int i = 1; i <= n; i++) {
// cout << sum2[i] << " \n"[i == n];
// }
map<pair<int, int>, vector<int>> mp;
mp[ {0, 0}].push_back(1);
for (int i = 1; i <= n; i++) {
mp[ {sum1[i], sum2[i]}].push_back(i + 1);
}
string ans;
for (int i = 1; i <= n; i++) {
int x = sum1[i], y = sum2[i];
int nex = x - r, ney = y - c;
if (mp[ {nex, ney}].size() == 0 ) {
ans += "0";
continue;
}
if (mp[ {nex, ney}].back() <= i) {
ans += "1";
continue;
}
int l = upper_bound(mp[ {nex, ney}].begin(), mp[ {nex, ney}].end(), i) - mp[ {nex, ney}].begin();
if (mp[ {nex, ney}][l] <= i) ans += "1";
else {
if (l != 0) l--;
else {
ans += "0";
continue;
}
if (mp[ {nex, ney}][l] <= i) ans += "1";
}
}
cout << ans << '\n';
}
/*
10 1 2
NEESESWEES
2 2
2 1
2 0 6 -2 1
NNEEWS */

E - Tree Game

交互题,通过对每个点\(bfs\)可以将所有 $u ->v $ 经过点集为偶数的组合记录下来,如果组合的数量是奇数那么是\(first\),否则是\(second\)。然后根据对手操作输出合适的\((u,v)\)。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
cin >> n;
vector<vector<int>> g(n + 10);
vector<int> d(n + 10), e(n + 10);
for (int i = 1; i < n; i++) {
int u, v;
cin >> u >> v;
d[u]++;
e[v]++;
g[u].push_back(v);
g[v].push_back(u);
}
queue<pair<int, int>> qq;
map<pair<int, int>, int> mp;
for (int i = 1; i <= n; i++) {
vector<int> st(n + 1), dis(n + 1, 0);
queue<int> q;
q.push(i);
st[i] = 1;
while (q.size()) {
int u = q.front();
q.pop();
for (auto v : g[u]) {
if (st[v] == 0) {
q.push(v);
st[v] = 1;
dis[v] = dis[u] + 1;
}
}
}
for (int j = 1; j <= n; j++) {
// cout << dis[j] << " \n"[j == n];
if (j != i) {
if ((dis[j] + 1) % 2 == 0 && dis[j] + 1 != 2) {
if (mp[ {i, j}] == 0) {
qq.push({i, j});
mp[ {i, j}] = 1;
mp[ {j, i}] = 1;
}
}
}
}
}
map<pair<int, int>, int> st;
// cout << qq.size() << '\n';
if (qq.size() % 2 == 1) {
cout << "First" << endl;
while (qq.size()) {
while (qq.size() && st[qq.front()] == 1) qq.pop();
pair<int, int> t = qq.front();
qq.pop();
cout << t.first << ' ' << t.second << endl;
int u, v;
cin >> u >> v;
st[ {u, v}] = 1;
st[ {v, u}] = 1;
if (u == -1 && v == -1) return 0;
}
} else {
cout << "Second" << endl;
while (qq.size()) {
int u, v;
cin >> u >> v;
st[ {u, v}] = 1;
st[ {v, u}] = 1;
if (u == -1 || v == -1) return 0;
while (qq.size() && st[qq.front()] == 1) qq.pop();
if (qq.size() == 0)return 0;
pair<int, int> t = qq.front();
qq.pop();
cout << t.first << ' ' << t.second << endl;
}
int u, v;
cin >> u >> v;
if (u == -1 && v == -1) return 0;
}
return 0;
}
/*
6
1 2
2 3
3 4
4 5
5 6 5
1 2
1 3
2 4
2 5
*/

F - ABCBA

这个题就是比较简单,很容易想到找最长的 \([l,n]\) 回文串,代码实现使用的哈希。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ull unsigned long long
const int N = 1e6 + 10, base = 13331;
ull hs[N], pa[N], fhs[N], fpa[N];
ull get(int l, int r) {
return hs[r] - hs[l - 1] * pa[r - l + 1];
}
ull getf(int l, int r) {
return fhs[r] - fhs[l - 1] * fpa[r - l + 1];
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
string s;
cin >> s;
string yu = s;
int n = s.size();
s = ' ' + s;
pa[0] = 1, fpa[0] = 1;
for (int i = 1; i <= n; i++) {
pa[i] = pa[i - 1] * base;
hs[i] = hs[i - 1] * base + s[i];
}
reverse(yu.begin(), yu.end());
string fs = yu;
reverse(yu.begin(), yu.end());
fs = ' ' + fs;
for (int i = 1; i <= n; i++) {
fpa[i] = fpa[i - 1] * base;
fhs[i] = fhs[i - 1] * base + fs[i];
}
int k = n;
for (int i = 1; i <= n; i++) {
ull a = get(i, n);
ull b = getf(1, n - i + 1);
if (a == b) {
k = i - 1;
break;
}
}
string ans = yu;
for (int i = k; i >= 1; i--) {
ans += s[i];
}
cout << ans << '\n';
}
/*
*/

UNIQUE VISION Programming Contest 2025 Spring (AtCoder Beginner Contest 398) (A~F) 补题+题解的更多相关文章

  1. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解

    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...

  2. HHKB Programming Contest 2022 Winter(AtCoder Beginner Contest 282)

    前言 好久没有打 AtCoder 了.有点手生.只拿到了 \(\operatorname{rk}1510\),应该上不了多少分. 只切了 \(\texttt{A,B,C,D}\) 四题. A - Ge ...

  3. AtCoder Beginner Contest 255(E-F)

    Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder E - Lucky Numbers 题意: 给两个数组a ...

  4. AtCoder Beginner Contest 053 ABCD题

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

  5. AtCoder Beginner Contest 076

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

  6. AtCoder Beginner Contest 068 ABCD题

    A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...

  7. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  8. atcoder beginner contest 251(D-E)

    Tasks - Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)\ D - At Most 3 (Contestant ...

  9. AtCoder Beginner Contest 100 2018/06/16

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

  10. AtCoder Beginner Contest 052

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

随机推荐

  1. LRU的map+双链表实现(Go描述)

    面云账户时候问了LRU,具体实现的方式是map+双链表.Set和Get的时间复杂度都是O(1).完整写一遍复习一下, 仅作记录 /** * @Author: lzw5399 * @Date: 2021 ...

  2. Raspberry pi 上部署调试.Net的IoT程序

    树莓派(Raspberry pi)是一款基于ARM 架构的单板计算机(Single Board Computer),可以运行各种 Linux 操作系统,其官方推荐使用的 Raspberry Pi OS ...

  3. dotnet最小webApi开发实践

    dotnet最小webApi开发实践 软件开发过程中,经常需要写一些功能验证代码.通常是创建一个console程序来验证测试,但黑呼呼的方脑袋界面,实在是不讨人喜欢. Web开发目前已是网络世界中的主 ...

  4. FileGDB代码示例

    FileGDB代码示例 1. 读取FileGDB图层 1.1 实现思路 graph TD A[注册OGR] --> B[设置中文路径支持] B --> C[打开数据驱动] C --> ...

  5. 内存吞金兽(Elasticsearch)的那些事儿 -- 架构&三高保证

    系列目录 内存吞金兽(Elasticsearch)的那些事儿 -- 认识一下 内存吞金兽(Elasticsearch)的那些事儿 -- 数据结构及巧妙算法 内存吞金兽(Elasticsearch)的那 ...

  6. UML的9种常用图与建模工具详解

    UML即Unified Model Language,是一种建模语言,也是标准建模语言.在软件开发中,当系统规模比较复杂时,需要用图形抽象地来表达复杂的概念,让整个软件设计更具有可读性,可理解性,以便 ...

  7. Golang-反射10

    http://c.biancheng.net/golang/reflect/ Go语言反射(reflection)简述 反射(reflection)是在 Java 出现后迅速流行起来的一种概念,通过反 ...

  8. C++:typedef 与 #define 的区别

    1.执行上不同 关键字 typedef 在编译阶段有效,由于是在编译阶段,因此 typedef 有类型检查的功能. #define 则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字 ...

  9. 使用xtrabackup对MySQL8.0.34进行备份和恢复

    Percona XtraBackup 是一款开源的.用于 MySQL 和 MariaDB 的热备份工具,它可以在不停止数据库服务的情况下进行全量或增量备份,并且能够快速恢复数据.以下从特点.安装.备份 ...

  10. 谈谈天翼云VPCE

    本文分享自天翼云开发者社区<谈谈天翼云VPCE>,作者:天枫霁月 一.VPCE产品出现的背景 跨VPC通信,且能够严格限制访问,任意两个租户之间都能互通,性能高,花费少,通过VPCE产品实 ...