AtCoder Beginner Contest 188

A,B很简单就不多说

C - ABC Tournament

找出前一半的最大值和后一半的最大值,二者中较小的那一个对应的序号就是最后的答案。

时间复杂度:\(\mathcal{O}(2^N)\)

using ll = long long;
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
ll a[70000];
int n;
cin >> n, n = pow(2, n);
for (int i = 0; i < n; ++i) cin >> a[i];
ll m1 = a[0], idx = 0;
for (int i = 1; i < n / 2; ++i)
if (a[i] > m1) m1 = a[i], idx = i;
ll m2 = a[n / 2], idxx = n / 2;
for (int i = n / 2 + 1; i < n; ++i)
if (a[i] > m2) m2 = a[i], idxx = i;
cout << (m1 < m2 ? idx + 1 : idxx + 1) << "\n";
return 0;
}

D - Snuke Prime

时间复杂度:\(\mathcal{O}(N)\)

using ll = long long;
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
ll N, C;
cin >> N >> C;
vector<pair<ll, ll>> event;
for (ll i = 0; i < N; ++i) {
ll a, b, c;
cin >> a >> b >> c;
event.push_back({a - 1, c});
event.push_back({b, -c});
}
sort(event.begin(), event.end());
ll ans = 0, fee = 0, time = 0;
for (auto [x, y] : event) {
if (x != time) {
ans += min(C, fee) * (x - time);
time = x;
}
fee += y;
}
cout << ans << "\n";
return 0;
}

E - Peddler

题意:N 个城镇,每个镇子购买和卖出 \(1kg\) 黄金的价格是 \(A_i\) ,现在可以我们有 M条道路,问怎么才能获得最大收益

思路:虽然看过去需要搜索做,但这里只要逆向动态规划即可。

int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int N, M;
cin >> N >> M;
vector<int> A(N + 1);
for (int i = 1; i <= N; ++i) cin >> A[i]; vector<vector<int>> e(N + 1);
for (int i = 0; i < M; ++i) {
int u, v;
cin >> u >> v;
// e[u].emplace_back(v), e[v].emplace_back(u);
e[u].emplace_back(v); // 这里单向和双向都没什么区别
} vector<int> h(N + 1, -1e9);
int ans = -1e9;
for (int i = N; i > 0; --i) {
for (auto v : e[i]) h[i] = max(h[i], h[v]);
ans = max(ans, h[i] - A[i]);
h[i] = max(h[i], A[i]);
}
cout << ans << "\n";
return 0;
}

F - +1-1x2

  • 如果 \(X \ge Y\) ,则答案为\(X - Y\)
  • 如果 \(X < Y\) ,则可以考虑用DFS,详细可以看代码
using ll = long long;
ll x, y, ans = 1e18;
map<ll, ll> mp;
ll dfs(ll a) {
if (mp.count(a)) return mp[a];
if (a <= x) return x - a;
if (a & 1)
return mp[a] = min(min(dfs((a + 1) / 2), dfs((a - 1) / 2)) + 2, a - x);
else
return mp[a] = min(dfs(a / 2) + 1, a - x);
}
int main() {
cin >> x >> y;
cout << dfs(y);
}

AtCoder Beginner Contest 188 题解的更多相关文章

  1. AtCoder Beginner Contest 188题解

    A 题意 问\(x,y\)相差是否小于\(3\) #include<iostream> #include<cstdio> #include<cmath> #defi ...

  2. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

  3. AtCoder Beginner Contest 153 题解

    目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...

  4. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

  5. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  6. AtCoder Beginner Contest 173 题解

    AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...

  7. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

  8. AtCoder Beginner Contest 169 题解

    AtCoder Beginner Contest 169 题解 这场比赛比较简单,证明我没有咕咕咕的时候到了! A - Multiplication 1 没什么好说的,直接读入两个数输出乘积就好了. ...

  9. AtCoder Beginner Contest 148 题解

    目录 AtCoder Beginner Contest 148 题解 前言 A - Round One 题意 做法 程序 B - Strings with the Same Length 题意 做法 ...

  10. AtCoder Beginner Contest 151 题解报告

    总的来说,这次的题目比较水,然而菜菜的我并没有把所有题目都做完,话不多说,直接来干货: A:Next Alphabet 题目链接:https://atcoder.jp/contests/abc151/ ...

随机推荐

  1. PageHelper插件注意事项

    PageHelper插件注意事项 使用PageHelper.startPage后要紧跟查询语句 下面的代码就有可能出问题: PageHelper.startPage(10, 10); if(param ...

  2. LeetCode-Java:122. 买卖股票的最佳时机Ⅱ

    题目 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格. 在每一天,你可以决定是否购买和/或出售股票.你在任何时候 最多 只能持有 一股 股票.你也可以先购买, ...

  3. 【JMeter】使用nmon进行性能资源监控

    使用nmon进行性能资源监控 目录 使用nmon进行性能资源监控 一.前言 二.nmon的下载安装 1.查看系统信息 2.查看CPU信息 2.下载 3.解压 4.一个小问题 三.在性能测试时使用命令行 ...

  4. [THUPC2022 决赛] rsraogps

    [THUPC2022 决赛] rsraogps 题目描述 给序列 \(a_1,\dots,a_n\),\(b_1,\dots,b_n\),\(c_1,\dots,c_n\), 定义区间 \([l,r] ...

  5. Python+Selenium+Webdriver+unittest 实现登录126邮箱

    第一版:登录 #encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webd ...

  6. 香橙派5plus从ssd启动Ubuntu

    官方接口图 我实际会用到的就几个接口,背面的话就一个M.2固态的位置: 其中WIFI模块的接口应该也可以插2230的固态,不过是pcie2.0的速度,背面的接口则是pcie3.0*4的速度,差距还是挺 ...

  7. AI辅助宫颈癌筛查技术全球居首,守护者的力量来源是?

    宫颈癌,是常见的妇科恶性肿瘤.宫颈癌发病率在妇科恶性肿瘤中仅次于乳腺癌,但同时也是医学界公认的病因明确,预防有疫苗.且早期治愈率高的病症!病理形态学诊断被医学界公认为疾病诊断的"金标准&qu ...

  8. 什么是VXLAN?为什么需要VXLAN?

    摘要:本文介绍了什么是VXLAN,以及VXLAN的基本概念和工作原理,包括:为什么需要VXLAN?VXLAN与VLAN之间有啥不同?什么是VTEP?什么是VNI?VXLAN报文是如何封装的?VXLAN ...

  9. 从源码角度详解Java的Callable接口

    摘要:本文从源码角度深入解析Callable接口. 本文分享自华为云社区<深入解析Callable接口>,作者: 冰 河 . 本文纯干货,从源码角度深入解析Callable接口,希望大家踏 ...

  10. 云小课|CDN第5课 CDN入门之—我的网站可以用CDN加速吗?

    摘要:CDN(Content Delivery Network,内容分发网络)通过将源站资源缓存到遍布各地的边缘节点服务器上,用户可以就近获取资源,从而达到加速的效果. 本文分享自华为云社区<[ ...