AtCoder Beginner Contest 363
AtCoder Beginner Contest 363
前言
只出了三题,被 d 卡住了,事实上 e 题应该对我而言更简单,没及时换题。
A - Piling Up (atcoder.jp)
思路
代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int R;
cin >> R;
if (R <= 99) cout << 100 - R << '\n';
else if (R <= 199)cout << 200 - R << '\n';
else cout << 300 - R << '\n';
return 0;
}
B - Japanese Cursed Doll (atcoder.jp)
思路
问第 P 小的数比 T 差多少。
代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, T, P;
cin >> N >> T >> P;
vector<int> L(N + 1);
for (int i = 1; i <= N; i ++) {
cin >> L[i];
}
sort(L.begin() + 1, L.end());
cout << max(T - L[N - P + 1], 0) << '\n';
return 0;
}
C - Avoid K Palindrome 2 (atcoder.jp)
思路
全排列判一下回文串即可。
代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, K;
cin >> N >> K;
string s;
cin >> s;
sort(s.begin(), s.end());
int ans = 0;
do {
int f = 1;
for (int i = 0; i + K - 1 < N; i ++) {
int l = i, r = i + K - 1;
while (l <= r && s[l] == s[r])
l ++, r--;
if (r < l) {
f = 0;
}
}
ans += f;
} while (next_permutation(s.begin(), s.end()));
cout << ans << '\n';
return 0;
}
D - Palindromic Number (atcoder.jp)
题意
问第 N 大的数字回文串是多少。
思路
除 0 以外,枚举位数观察回文数的分布,1 位的回文数有 9 个,2 位的回文数有 9 个,3 位的回文数有 90 个,4 位的回文数有 90 个,5 位的回文数有 900 个,6 位的回文数有 900 个,7 位的回文数有 9000 个,8 位的回文数有 9000 个 \(\dots\),所以我们可以快速枚举 N 位,看它定位在哪位数,由于最高位非 0 ,所以 N 需要减 1 在最高位来放置至少一个 1 ,剩下的就是从 这一位开始找第 \(m(N\%p)\) 小的自然数,此时我们只是确定了这个回文数的一半,根据以上的性质,每 \(9\times 10^x\) 个数是有奇数位和偶数位分布的,所以我们需要判断一下当前 N 是否小于 \(9\times 10^x\) ,是的话就是奇数位的,需要去掉最后一位。
代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
i64 N;
cin >> N;
if (N == 1) {
cout << 0 << '\n';
return 0;
}
N --;
i64 p = 9;
while (N >= 2 * p) {
N -= 2 * p;
p *= 10;
}
N --;
string s = to_string(N % p + p / 9);
string t = s;
reverse(t.begin(), t.end());
if (N < p) {
s.pop_back();
}
s += t;
cout << s << '\n';
return 0;
}
E - Sinking Land (atcoder.jp)
思路
bfs + 优先队列。
先把临海的点加进最小堆里,其他待加入的点标记一下,每次海平面高过最低点后就向四周搜一下,把没加入的点加进去。
代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int H, W, Y;
cin >> H >> W >> Y;
set<pair<int, int>> st;
vector mp(H + 1, vector<int>(W + 1));
priority_queue<array<int, 3>> Q;
for (int i = 1; i <= H; i ++) {
for (int j = 1; j <= W; j ++) {
cin >> mp[i][j];
if (i == 1 || i == H || j == 1 || j == W) {
Q.push({ -mp[i][j], i, j});
} else {
st.insert({i, j});
}
}
}
const int u[] = {0, 0, 1, -1}, v[] = {1, -1, 0, 0};
int ans = H * W;
for (int y = 1; y <= Y; y ++) {
while (Q.size()) {
auto [val, i, j] = Q.top();
val = -val;
if (val > y) break;
Q.pop();
ans --;
for (int k = 0; k < 4; k ++) {
int dx = i + u[k], dy = j + v[k];
if (dx >= 1 && dx <= H && dy >= 1 && dy <= W) {
if (!st.count({dx, dy})) continue;
Q.push({ -mp[dx][dy], dx, dy});
st.erase({dx, dy});
}
}
}
cout << ans << '\n';
}
return 0;
}
AtCoder Beginner Contest 363的更多相关文章
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】
AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...
- AtCoder Beginner Contest 064 D - Insertion
AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...
- AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
- AtCoder Beginner Contest 075 C bridge【图论求桥】
AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...
随机推荐
- 关于java时间类型和格式化到微秒问题
常规的问题此处略,因为网络上到处都是,这里主要讨论三个问题: 1.数据库的时间戳类型(含微秒)对应java的什么类型 java的常见时间类型比较多: java.util.Date java.sql.D ...
- Springboot3.0+spring6.0+JDK17+配置jsp和打war包
由于某些缘故,公司的产品需要升级,但并不希望花费大量时间重写前端代码(原来的就不是前后分离的).所以虽然spring和springboot都升级为最新的版本,但是依然还是需要支持jsp,并继续用打包为 ...
- Springcloud开发之OpenFeign调用和认证
SpringCloud开发cloud具有巨大的灵活性. 在调用其它服务的时候有多种方式,虽然本质一样,但是细节还是有所差异. 一.概述 当a服务调用b服务的时候有多种方式进行: 1.通过openFei ...
- k8s健康检查(探针Probe)之LivenessProbe、ReadinessProbe和StartupProbe
背景 集群正常服务时,会出现容器死掉问题,如宿主机故障.资源不足.下游故障等.这个时候容器需要从endpoints摘除(容器挂了就不能接流了),并执行它的restart策略. LivenessProb ...
- python json反序列化为对象
在Python中,将JSON数据反序列化为对象通常意味着将JSON格式的字符串转换为一个Python的数据结构(如列表.字典)或者一个自定义的类实例.虽然Python的标准库json模块不提供直接将J ...
- Linux中的IDR机制
# Linux中的IDR机制 背景 最近在学习 Linux的i2c子系统,看到代码中有关于IDR的调用.了解了一下有关的文档,发现是用来管理指针(对象实例). //based on linux V3. ...
- FreeRtos学习总结
背景 最近项目需要,花了几天时间学习了FreeRTOS,因为之前有操作系统和底层的基础,所以上手非常快. 正文 基础篇 学习方法:建议先阅读本人整理的文章:再结合FreeRTOS文档官方的全英文档&l ...
- power bi权限控制笔记
power bi权限控制:power bi权限控制角色目前只能在desktop 客户端进行创建.报表进行权限控制后,用于行级别安全,需注意:a.对数据集做行级别安全性的角色分配 b.需要进行报表的共享 ...
- 使用Stream流实现以List<Map<String, Object>>集合中Map的key值进行排序
使用Stream流实现以List<Map<String, Object>>集合中Map的key值进行排序 创建一个list存入数据 List<Map<String, ...
- [oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines
换行回车 回忆上次内容 区分概念 terminal终端 主机网络中 最终的 端点 TeleTYpewriter 电传打印机 终端硬件 shell 终端硬件基础上的 软件壳子 Console 控制台 主 ...