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 ...
随机推荐
- python安装pywifi
1.Windows安装: 在Dos窗口中输入以下命令: pip install pywifi 如果找不到pip命令,那么需要将Python安装文件夹下Scripts文件夹的绝对路径加入环境变量中. 2 ...
- JS神奇的或0(|0)
按照常识,位运算x|0,要么等于x,要么等于0 那么在JS的世界你的认知就要被颠覆了 下面请看 不带或0运算: (window.crypto.getRandomValues(new Uint32Arr ...
- 35个Redis企业级性能优化点与解决方案
Redis作为企业级应用中广泛使用的高性能键值存储数据库,其性能优化是一个复杂且多面的话题.以下是V 哥整理的一些关键的优化点和相应的解决方案,提供给兄弟们参考. Redis的性能优化涉及到硬件选择. ...
- 在高通Fastmmi模式中增强交互方式
在高通Fastmmi模式中增强交互方式 背景 由于之前工厂抱怨 FCT模式不好用. 之前的FCT测试是这样子的:PCBA上夹具,连接USB. 同时,使用上位机程序(ATE)发送指令,人工判断结果以后, ...
- (要做的事情)利用MNIST识别自己创建的手写数据
(要做的事情)利用MNIST识别自己创建的手写数据 看懂MNIST 进阶教程,了解CNN
- MAPREDUCE中的序列化
Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系....),不便于在网络中高效传输: 所以,hadoo ...
- node.js (原生模板引擎模板)
app01 // 引入http模块 const http = require('http'); //连接数据库 require('./model/connects'); // 创建网站服务器 cons ...
- Linux 鉴定故障
导读 进入linux,输入root账户,密码输入是正确的,提示"鉴定故障",刚开始以为是系统挂了,后来百度说,需要重置root密码,具体步骤如下. 重置root密码 重启Linux ...
- Linux常用指令及shell脚本记录
记录一些常用指令在博客上,以防哪天因太久不敲而忘却,还可以直接翻看博客记录,不用再一条条百度搜...... 一.Linux常用指令 一.设置文件权限为aapp用户及用户组-- chown -R app ...
- Java-泛型,枚举,注解
1 泛型类 package demo; public class FanXingLei { public static void main(String[] args) { // TODO 自动生成的 ...