AtCoder Beginner Contest 196 个人题解
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 个人题解的更多相关文章
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- AtCoder Beginner Contest 089完整题解
A - Grouping 2 Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement There a ...
- 2018.09.08 AtCoder Beginner Contest 109简要题解
比赛传送门 水题大赛? 全是水题啊!!! T1 ABC333 就是判断是不是两个数都是奇数就行了. 代码: #include<bits/stdc++.h> using namespace ...
- Atcoder Beginner Contest 138 简要题解
D - Ki 题意:给一棵有根树,节点1为根,有$Q$次操作,每次操作将一个节点及其子树的所有节点的权值加上一个值,问最后每个节点的权值. 思路:dfs序再差分一下就行了. #include < ...
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- AtCoder Beginner Contest 153 题解
目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...
- AtCoder Beginner Contest 177 题解
AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...
- AtCoder Beginner Contest 184 题解
AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...
- AtCoder Beginner Contest 173 题解
AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...
- AtCoder Beginner Contest 172 题解
AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...
随机推荐
- C#中的virtual和override关键字
公众号「DotNet学习交流」,分享学习DotNet的点滴. 使用基类中的引用 代码如下: class MyBaseClass //基类 { public void Print() ...
- echarts官网文档打开慢的解决方法
echarts官网文档打开慢的解决方法由于我们在做大数据屏的时候需要很多echarts图表,这个过程中也会遇到需要查询echarts官网文档.手册.配置项的时候,但是由于网站在国外,访问很慢或者打不开 ...
- 【报错:For input string: ""报错: get connection error! 报错:java.lang.NullPointerException 报错:java.lang.NumberFormatException: For input string: "id"】解决方案
原因:没有input数据进入,但是当我填写数据进入的时候 get connection error! 这个消息,是我要抛出去的异常,源代码下 我一开始觉得是代码书写的问题,找.......... 应该 ...
- 使用Visual Studio 2022 创建lib和dll并使用
对于一个经常写javaWeb的人来说,使用Visual Studio似乎没什么必要,但是对于使用ffi的人来说,使用c或c++编译器,似乎是必不可少的,下面我将讲述如何用Visual Studio 2 ...
- HDU-2586 How far away?
There are n houses in the village and some bidirectional roads connecting them. Every day peole alwa ...
- bash shell笔记整理——cd命令、目录路径
cd---change directory 改变目录的意思 语法: cd [选项] <目录> 选项: -L 会自动进入符号连接目录(默认) -P 进入符号连接目录的真实目录下. 常用: 命 ...
- Charles的奇巧淫技
大家好,我是 dom 哥.今天讨论一下 Charles 的高级用法. Charles 是 mac 电脑的一个网络代理软件,也是我平时开发常用的一个工具,用过的都说好. 本文不是 Charles 的入门 ...
- Javascript Ajax总结——其他跨域技术之Comet
Comet指一种更高级的Ajax技术( 也称 "服务器推送" ),一种服务器向页面推送数据的技术.Comet能够让信息近乎实时地被推送到页面上,非常适合体育比赛的分数和股票报价.有 ...
- Python——第四章:函数的递归调用
递归: 函数自己调用自己 递归如果没有任何东西拦截的话. 它默认就是一个死循环 def func() func() func() 因此递归调用的时候需要有判断,来退出循环 def func() if ...
- DVWA SQL Injection(blind)(SQL盲注)全等级
SQL Injection(blind)(盲注) 目录: SQL Injection(blind)(盲注) 1. Low 2.Medium 3.High 4.Impossible 5.运用sqlmap ...