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 ...
随机推荐
- 华为ar502H物联网边缘计算网关,在容器内控制/dev/do0开关命令
执行以下命令进行开关do继电开关,可以听见电位器声音. echo -en "\x01" > /dev/do0 echo -en "\x00" > ...
- 《REBEL Relation Extraction By End-to-end Language generation》阅读笔记
论文来源 代码地址 相关视频(YouTube) 相关概念: 1.What is natural language understanding (NLU)? Natural language ...
- Rong晔大佬教程学习(0):前言
2023-12-13 在安装了tinyriscv的工具链之后,本想着说去看那个技术文档,但是那个技术文档只是相当于一个"使用手册",而不是技术教程,所以说还是得去补一补计组的知识. ...
- 2023年国家基地“楚慧杯”网络安全实践能力竞赛初赛-Crypto+Misc WP
Misc ez_zip 题目 4096个压缩包套娃 我的解答: 写个脚本直接解压即可: import zipfile name = '附件路径\\题目附件.zip' for i in range(40 ...
- JavaScript forEach 方法跳出循环
for循环 JavaScript中,for循环可以使用 break 和 continue 来跳出: continue:跳出本次循环 break:结束循环 for (let i = 0; i < ...
- JavaFx 打开一个新窗口和窗口交互(四)
JavaFx 打开一个新窗口和窗口交互(四) JavaFX 从入门入门到入土系列 前面我演示的demo都是单个窗口,那么如何实现多个窗口呢?使用Stage secondStage = new Stag ...
- 使用 PostgreSQL 实现 PageRank
PageRank 算法 作为 Google 最早的一个网页排名算法,该算法在早期的搜索引擎中是搜索结果最为准确的,同时也是 Google 发家的一个重要算法.尽管这些年来该算法不再是 Google ...
- 轻量化动态编译库 Natasha v8.0 正式发布!
.NET8.0 与 动态编译 Hello 各位小伙伴,我于 2024年1月10日 发布了 Natasha 一个全新的里程碑版本 v8.0,对于老用户而言,此次发布版本号跨度较大,是因为我决定使用新的版 ...
- 深入剖析 Linux Cgroups 子系统:资源精细管理
本章主要演示以下 cgroups 下各个 subsystem 的作用. 根据难易程度,依次演示了 pids .cpu 和 memory 3 个 subsystem 的使用. 注:本文所有操作在 Ubu ...
- K8S系列一:概念入门
K8S系列一:概念入门 写在前面 本文组织方式: K8S的架构.作用和目的.需要首先对K8S整体有所了解. K8S是什么? 为什么是K8S? K8S怎么做? K8S的重要概念,即K8S的API对象.要 ...