AtCoder Beginner Contest 178 个人题解(C组合问题 + 快速幂,D规律,E数学公式变形)
补题链接:Here
A - Not Editorial
给出 0
;给出 1
利用
x ^ 1
可以快速实现的转换
B - Product Max
比较端点乘积的大小即可
C - Ubiquity
题解:输入一个N,
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:先是看了半天,然后写几组样例,就找到规律了
最后别忘记取模即可
E - Dist Max
题意:二维平面上有N个点
思路:两点之间的位置关系可以有以下两种模式。
考虑两个最远点之间的位置关系...
的最大值 和最小值 之间的差异,当两个最远的点是右侧图形时; 的最大值,当两个最远的点是右侧图形时, 与最小值之间的差异值
因此,从直觉上讲,最
公式变形:
关于绝对值问题前提:
通常情况下,前景会更好。 对于每对(i,j),即使xi <xj,它也不会失去通用性(反之亦然,交换)。
由上面的变形
- 求各个
的 的最大值 - 求各个
的 的最大值
所以再回到上面:
,但由于用了sort
时间复杂度为
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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战
2020-04-06 动态规划之最小编辑距离