A - Difference Max

区间左端减去区间右端

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << b - c << endl;
return 0;
}

B - Round Down

一开始想错了,应该String读入,然后find('.')的位置即可,如果没有说明原来就是整数

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
string s;
cin >> s;
int idx = s.find('.');
if (idx == -1) cout << s;
else
for (int i = 0; i < idx; ++i) cout << s[i];
return 0;
}

C - Doubled

\(N \le 10^{12}\) 过大,所以不可能直接通过整数解决。

利用 字符串 的连接性质转化为 long long 进行判断即可,尽管稍微仍比较耗时但能够 AC

using ll = long long;
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
ll n, x = 0;
cin >> n;
while (stoll(to_string(x) + to_string(x)) <= n) x++;
cout << x - 1 << "\n"; // 把 0 算进去了,所以要减一
return 0;
}

**D - Hanjo **

题意:在 HW 的面积里放置 A个 \(2\times1\) 长方块榻榻米,B个 \(1\times1\) 方形榻榻米。请问有多少种放置方法。

根据官方的题解,对于这个 \(HW \le 16\) 是约束很小的情况,所以我们可以使用 DFS 进行完全爆搜。

从左上角的格子开始,尝试放置一个方形榻榻米垫,个长方形榻榻米垫,在左侧或下方突出;然后我们可以穷尽地搜索所有的覆盖方式。

现在让我们估计一下时间复杂度。

我们有左上角单元格和榻榻米方向的选择,所以我们有答案的上界 \(2^A(\begin{smallmatrix} HW\\A \end{smallmatrix})\)。

由于 \(2^A(\begin{smallmatrix} HW\\A \end{smallmatrix})\) 的最大值为 \(5 \times10^7\),所以速度足够快。

事实上,最大答案是3388,所以它的工作速度比估计的要快得多。

int H, W, A, B, ans = 0;
void dfs(int i, int bit, int A, int B) {
if (i == H * W) return (void)ans++;
if (bit & 1 << i) return dfs(i + 1, bit, A, B);
if (B) dfs(i + 1, bit | 1 << i, A, B - 1);
if (A) {
if (i % W != W - 1 && ~bit & 1 << (i + 1))
dfs(i + 1, bit | 1 << i | 1 << (i + 1), A - 1, B);
if (i + W < H * W) dfs(i + 1, bit | 1 << i | 1 << (i + W), A - 1, B);
}
}
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
cin >> H >> W >> A >> B;
dfs(0, 0, A, B);
cout << ans << "\n";
return 0;
}

E - Filters

https://atcoder.jp/contests/abc196/editorial/953

#include <algorithm>
#include <iostream>
#include <numeric>
using namespace std;
using ll = long long;
const ll INF = numeric_limits<ll>::max() / 4;
void chmin(ll& a, ll b) { return (void)(a > b ? a = b : a = a); }
void chmax(ll& a, ll b) { return (void)(a < b ? a = b : a = a); }
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
ll N;
cin >> N;
ll low = -INF, high = INF, add = 0;
for (ll i = 0; i < N; ++i) {
ll A, T;
cin >> A >> T;
if (T == 1) low += A, high += A, add += A;
else if (T == 2)
chmax(low, A), chmax(high, A);
else
chmin(low, A), chmin(high, A);
}
ll Q, x;
cin >> Q;
while (Q--) {
cin >> x;
// clamp 用来判断一个值是否“夹”在另外一对值之间,如果在区间内则返回
// x,如果大于左区间则返回左区间,不然返回右区间 // cout << clamp(x + add, low, high) << '\n';
cout << min(high, max(low, x + add)) << "\n";
}
return 0;
}

AtCoder Beginner Contest 196 个人题解的更多相关文章

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

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

  2. AtCoder Beginner Contest 089完整题解

    A - Grouping 2 Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement There a ...

  3. 2018.09.08 AtCoder Beginner Contest 109简要题解

    比赛传送门 水题大赛? 全是水题啊!!! T1 ABC333 就是判断是不是两个数都是奇数就行了. 代码: #include<bits/stdc++.h> using namespace ...

  4. Atcoder Beginner Contest 138 简要题解

    D - Ki 题意:给一棵有根树,节点1为根,有$Q$次操作,每次操作将一个节点及其子树的所有节点的权值加上一个值,问最后每个节点的权值. 思路:dfs序再差分一下就行了. #include < ...

  5. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

  6. AtCoder Beginner Contest 153 题解

    目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...

  7. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

  8. AtCoder Beginner Contest 184 题解

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

  9. AtCoder Beginner Contest 173 题解

    AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...

  10. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

随机推荐

  1. 图文剖析 big.js 四则运算源码

    big.js,一个小型.快速的用于任意精度的十进制算术的JavaScript 库. big.js 用于解决平常项目中进行算术运算时精度丢失引起的结果不准确的问题.和 big.js 类似的两个库 big ...

  2. Cassandra中的MerkleTree反熵机制

    构建MerkleTree Cassandra 是一个分布式数据库系统,它使用 Merkle 树来实现数据一致性和数据完整性的验证. 在 Cassandra 中,每个节点都维护着自己的数据副本.为了确保 ...

  3. 地图选择器datav怎么使用?

    DataV 是一款基于阿里云的数据可视化产品,它提供了丰富的组件和功能,其中包括地图选择器.下面是一个详细的介绍: 1. 了解 DataV: - DataV 是一款强大的数据可视化工具,能够帮助用户将 ...

  4. 关于mac电脑突然搜不到家里wifi但手机却能连上的问题解决

    今天用mac电脑时,突然遇到一个奇怪的问题,家里wifi用的好好的,突然就连不上了,在看电脑能搜索到的wifi,居然家里的wifi都没有搜索到,但自己的手机却是正常的,然后我再看看我另外一台windo ...

  5. Java如何连接Mysql数据库

    条件:eclipse.MySQL .jdbc驱动 eclipse.MySQL 的安装.下载jdbc连接驱动 eclipse的安装去官网下载并安装 MySQL .jdbc的下载地址请访问:https:/ ...

  6. Android中使用Gson

    Gson是一个Java库,可用于将Java对象转换为它们的JSON表示.它还可以用于将JSON字符串转换为等效的Java对象.Gson可以处理任意Java对象,包括您没有源代码的已有对象. 一.简单使 ...

  7. Spring Boot中设置定时发送邮件任务

    1:浅谈发送邮箱: 邮箱验证是一个很常见的功能了,基本上每个网站都会用的到, java也有专门的jar来处理邮件发送等服务 2:学过javaweb大家都对发送邮箱上不是很陌生了吧 但之前发送邮箱的步骤 ...

  8. Centos 利用本地镜像安装yum源

    前提 在"设置"中确保两点 1.勾选"已连接" 2.添加上本地的"centos.iso"镜像文件 切换到用户目录 cd / 新建一个iso目 ...

  9. 文心一言 VS 讯飞星火 VS chatgpt (158)-- 算法导论12.3 5题

    五.用go语言,假设为每个结点换一种设计,属性 x.p 指向 x 的双亲,属性 x.succ 指向 x 的后继.试给出使用这种表示法的二叉搜索树 T 上 SEARCH.INSERT 和DELETE 操 ...

  10. three.js中帧缓存的使用

    目录 1. 概述 2. 示例 2.1. 代码 2.2. 解析 3. 参考 1. 概述 在网上查阅了一下three.js关于帧缓存的使用,感觉很多都是关于three.js中后处理通道的使用的.后处理通道 ...