M-SOLUTIONS Programming Contest 2020 游记 (AB水题,CD模拟,E题DFS)
A - Kyu in AtCoder
水题
B - Magic 2
题意很好理解,但写的时候注意一下边界
void solve() {
int a, b, c, k;
cin >> a >> b >> c >> k;
while (a >= b) k--, b <<= 1;
while (b >= c) k--, c <<= 1;
cout << (k >= 0 ? "Yes" : "No");
}
C - Marks
模拟题
由于比较位是
void solve() {
int n, k;
cin >> n >> k;
vector<ll> v(n);
for (ll &x : v) cin >> x;
for (int i = k; i < n; ++i) cout << (v[i] > v[i - k] ? "Yes\n" : "No\n");
}
D - Road to Millionaire
同上,维护最新值即可
void solve() {
ll a, b, c = 1000;
for (cin >> a >> b; cin >> a; b = a)
if (a > b) c += c / b * (a - b);
cout << c;
}
E - M's Solution
比较麻烦的DFS 题,考虑一下细节
using ll = long long;
const int N = 20;
struct node {
ll x, y, w;
} e[N];
ll n, res[N][N], ans[N];
void dfs(int u, int cnt) {
if (u == n) {
ans[cnt] = min(ans[cnt], accumulate(res[n], res[n] + n, 0ll));
return;
}
for (int i = 0; i < n; ++i) res[u + 1][i] = res[u][i];
dfs(u + 1, cnt);
for (int i = 0; i < n; ++i) res[u + 1][i] = min(res[u][i], e[i].w * abs(e[i].x - e[u].x));
dfs(u + 1, cnt + 1);
for (int i = 0; i < n; ++i) res[u + 1][i] = min(res[u][i], e[i].w * abs(e[i].y - e[u].y));
dfs(u + 1, cnt + 1);
}
void solve() {
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> e[i].x >> e[i].y >> e[i].w;
ans[i] = 1e18;
res[0][i] = e[i].w * min(abs(e[i].x), abs(e[i].y));
}
dfs(0, 0);
for (int i = 0; i <= n; ++i) cout << ans[i] << "\n";
}
【推荐】国内首个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程序员写了一个飞机大战