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的更多相关文章

  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. linux下后台运行程序

    文章目录 背景 nohup命令 setsid命令 pm2 背景 后台运行程序的时候,如果退出当前的终端(session),你运行的所有程序(包括后台程序),都将被关闭. 原因是:你运行的程序都是你的终 ...

  2. 实验2.ARP实验

    # 实验2.ARP实验 本实验用于验证arp以及arp表,arp缓存的使用,测试ping包时arp表的更新机制. 实验组 PC1 10.68.57.10 255.255.255.0 00-00-00- ...

  3. Android 编译系统 defconfig文件的确定

    Android 编译系统 defconfig文件的确定 背景 经常在驱动改动的时候,同时改动2个文件,才知道他们分别对应不同的编译结果. 路径 对应版本 kernel/msm-4.4/arch/arm ...

  4. 生成数字csv

    csv文件: import time import mcpi.minecraft as minecraft import mcpi.block as block mc = minecraft.Mine ...

  5. SqlServer 使用 case when 实现行转列,并创建视图表查询

    其实是个很简单的操作了,但长时间不用有点忘记了,正好项目上遇到这样的需求便把过程记录了下来. 一 需求描述 将河道水情表 结构如下,现在需要将水位Z字段由行展示转换为列展示.查询结果为展示时间和每个测 ...

  6. 网络化的控制系统简介(NCS)

    作为一个搞物联网应用的,最近才接触到NCS这个概念.有点东西,赶紧记录一下. NCS由通过网络连通的控制环路组成,控制信号和反馈信号会在控制器和本地系统间交换.典型的方块图如下: 其中,本地(Plan ...

  7. Nginx负载配置

    目录 Nginx 负载均衡笔记 1. 概述 1.1 Nginx 简介 1.2 负载均衡概述 2. 四层负载均衡(传输层) 2.1 工作原理 2.2 特点 2.3 优缺点 优点 缺点 2.4 示例场景 ...

  8. 树莓派4B-PCA9685驱动舵机

    前言 不知道你们有没有遇到过这么一种情况,直接用树莓派的引脚输出PWM控制舵机,舵机是会出现抖动的.就算代码进行一定的时延迟优化还是会有影响的. 现在我们可以使用PCA9685这个模块去驱动舵机. P ...

  9. WebUi爬虫自动化测试 Selenium4.X+Java教程

    为什么要学习Selenium 自动化测试 Selenium是最受欢迎的Web应用程序自动化测试工具之一. 通过学习Selenium,可以编写自动化测试脚本,用于自动执行各种任务,例如验证功能.测试用户 ...

  10. JS 延迟加载

    function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; wh ...