AtCoder Beginner Contest 178 个人题解(C组合问题 + 快速幂,D规律,E数学公式变形)
补题链接:Here
A - Not Editorial
给出 \(x = 1\) 则输出 0;给出 \(x = 0\) 则输出 1
利用
x ^ 1可以快速实现 \(x\) 的转换
B - Product Max
比较端点乘积的大小即可
C - Ubiquity
题解:输入一个N,\(0<=A_i<=9\),所以一共 \(10^N\) 种情况,序列中元素个数为 \(N\),序列中一定存在 0 和 9,要得到至少有一个0和一个9的所有情况,思路使用总共的情况减去只有一个 0 、只有 一个 9 、或者 0 和 9 都没有的情况。
ans = (ans + mod) % mod;因为取余后,各数的大小发生变化,这里防止
ans减为负数!!!
typedef long long ll;
const ll mod = 1e9 + 7;
ll qpow(ll a, ll b) {
ll ans = 1;
a %= mod;
for (; b; a = a * a % mod, b >>= 1)
if (b & 1) ans = ans * a % mod;
return ans;
}
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
ll n;
cin >> n;
ll ans = qpow(10, n) - qpow(9, n) - qpow(9, n) + qpow(8, n);
ans %= mod;
cout << (ans + mod) % mod;
return 0;
}
D - Redistribution
PS:先是看了半天,然后写几组样例,就找到规律了
\(a_i = a_{i - 1} + a_{i - 3}\\a_0 = 1,a_1 = a_2 = 0\)
最后别忘记取模即可
E - Dist Max
题意:二维平面上有N个点 \((x_i,y_i)\)。 找到其中两个点的最大曼哈顿距离。
思路:两点之间的位置关系可以有以下两种模式。

考虑两个最远点之间的位置关系...
- \(x_i + y_i\) 的最大值 \(M_1\) 和最小值 \(m_1\) 之间的差异,当两个最远的点是右侧图形时;
- \(x_i-y_i\) 的最大值,当两个最远的点是右侧图形时,\(M_2\)与最小值之间的差异值 \(m_2\)
因此,从直觉上讲,最 \(max(M_1-m_1,M_2-m_2)\) 似乎是答案。 让我们在公式转换的基础上进一步说明这一点。
公式变形:
关于绝对值问题前提:\(|x| = max(x,-x)\)
通常情况下,前景会更好。 对于每对(i,j),即使xi <xj,它也不会失去通用性(反之亦然,交换)。
=(x_j - x_i +max(y_j-y_i,y_i-y_j))\\
=max((x_j + y_j) - (x_i + y_i),(x_j - y_j)-(x_i,y_i))
\]
由上面的变形
- 求各个 \((i,j)\) 的 \((x_j + y_j) - (x_i + y_i)\) 的最大值
- 求各个 \((i,j)\) 的 \((x_j - y_j) - (x_i - y_i)\) 的最大值
所以再回到上面:\(max(M_1-m_1,M_2-m_2)\) 正是答案
- \(\mathcal{O}(N)\),但由于用了
sort时间复杂度为 \(\mathcal{O}(NlogN)\)
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int n;
cin >> n;
vector<int> a, b;
for (int i = 0, x, y; i < n; ++i) {
cin >> x >> y;
a.emplace_back(x + y);
b.emplace_back(x - y);
}
sort(a.begin(), a.end());
sort(b.begin(), b.end());
cout << max(a[n - 1] - a[0], b[n - 1] - b[0]);
return 0;
}
AtCoder Beginner Contest 178 个人题解(C组合问题 + 快速幂,D规律,E数学公式变形)的更多相关文章
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- AtCoder Beginner Contest 178 E - Dist Max 题解(推公式)
题目链接 题目大意 给你n个点(n<=2e5)要你求所有点中两个点最短的曼哈顿距离 曼哈顿距离定义为d(i,j)=|x1-x2|+|y1-y2|. 题目思路 想了很久也没有什么思路,其实就是一个 ...
- AtCoder Beginner Contest 178
比赛链接:https://atcoder.jp/contests/abc178/tasks A - not 题意 给出一个整数 $0 \le x \le 1$,如果 $x$ 是 $0$ 就输出 $1$ ...
- 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 ...
随机推荐
- UData+StarRocks在京东物流的实践
1 背景 数据服务与数据分析场景是数据团队在数据应用上两个大的方向,行业内大家有可能会遇到下面的问题: 1.1 数据服务 烟囱式开发模式:每来一个需求开发一个数据服务,数据服务无法复用,难以平台化,技 ...
- [清华集训2017] Hello World!
Hello world! 题目背景 不远的一年前,小 V 还是一名清华集训的选手,坐在机房里为他已如风中残烛的OI 生涯做最后的挣扎.而如今,他已成为了一名光荣的出题人.他感到非常激动,不禁感叹道: ...
- [CF1641D] Two Arrays
题目描述 Sam changed his school and on the first biology lesson he got a very interesting task about gen ...
- [CF1830D] Mex Tree
题目描述 You are given a tree with $ n $ nodes. For each node, you either color it in $ 0 $ or $ 1 $ . T ...
- [ABC246C] Coupon
Problem Statement There are $N$ items in a shop. For each $i = 1, 2, \ldots, N$, the price of the $i ...
- 这些 git 高级命令你知道几个
大家好,我是 dom 哥.今天给大家分享几个 git 的高级应用. git 是目前最流行的版本控制工具.git 玩的 6 不 6,轻则影响自己的开发幸福指数 ,重则影响下班时间 .本文介绍一些日常开发 ...
- C++ Qt开发:Charts与数据库组件联动
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Charts组 ...
- 理论+实践,揭秘昇腾CANN算子开发
摘要: 本文介绍了CANN自定义算子开发的几种开发方式和算子的编译运行流程.然后以开发一个DSL Add算子为例,讲解算子开发的基本流程. 本文分享自华为云社区<昇腾CANN算子开发揭秘> ...
- 解读Java内存模型中Happens-Before的8个原则
摘要:本文我们就结合案例程序来说明Java内存模型中的Happens-Before原则. 本文分享自华为云社区<[高并发]一文秒懂Happens-Before原则>,作者: 冰 河. 在正 ...
- 拥有5大核心竞争力的华为云GaussDB,成SACC2021最靓那一个…
摘要:华为云NoSQL数据库架构师余汶龙受邀参加第十三届中国系统架构师大会(SACC2021)并发表了重要演讲,分享了GaussDB(for Redis)的存算分离架构设计理念以及构筑的产品核心竞争力 ...