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. python内置模块——logging

    内置模块-logging loging模块是python提供的内置模块,用来做日志处理. 日志等级: 等级 释义 级别数值 CRITICAL(fatal) 致命错误,程序根本跑不起来 50 ERROR ...

  2. hive报错Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask[已解决]

    我的报错信息 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 解决1(可行):不走ya ...

  3. 简易的git命令行入门教程

    一.Git 全局设置 git config --global user.name "用户名" git config --global user.email "邮件地址@1 ...

  4. jmeter测试计划中的“独立运行每个线程组”Demo演示

    一:jmeter的运行顺序 测试计划-->线程组 其次执行顺序为:配置元件.前置处理器.定时器.取样器.后置处理器.断言.监听器 当一个测试计划中有多个线程组,当多个线程组都是是执行状态时,就会 ...

  5. 记一次逆向分析解密还原Class文件

    前言 前阵子我的一位朋友发来一份代码让我帮忙看看.具体就是所有的jsp文件内容和大小都一样,漏洞挖掘无从下手.经过分析发现所有的Class都使用了自定义的加密工具加密,经过逆向分析,顺利解密,因而有了 ...

  6. [USACO2007OPENS] Fliptile S

    题目描述 FJ 知道,智商高的奶牛产奶量也大,所以他为奶牛们准备了一个翻动瓦片的益智游戏. 在一个 \(M \times N\) 的方阵上(\(1 \leq M,N \leq 15\)),每个格子都有 ...

  7. drf实战和源码剖析----学习笔记1

    学自:bilibili武沛齐老师. 武老师讲课:清晰,连贯,实用,透彻,真乃名师! # 1. 什么是前后端分离 - 不分离,主要用于后台系统(CRUD)和用户量上的情况,开发起来代价小- 分离,面向用 ...

  8. N100低功耗win11安装wsl2当入门nas

    前言 最近入了一台16gb+512gb的N100,想着用来存些资源,当个nas,偶尔要用用windows系统,所以想直接在这上面搞个虚拟机算了,WSL2似乎是一个不错的选择,下面介绍捣鼓的教程. 没用 ...

  9. 数字孪生融合GIS系统将为交通领域带来什么改变?

    随着科技的不断发展,数字孪生和GIS技术正成为交通领域的新宠.数字孪生是指通过数学建模.数据采集和实时仿真等技术手段,将实体世界与数字世界相互关联,形成一个全新的虚拟系统.而GIS(地理信息系统)则是 ...

  10. Java:字符串(String)类型转成整型(int)的方法

    Java:字符串(String)类型转成整型(int)的方法 使用 Integer.parseInt() 或 Integer.valueOf() 将 String 转换为 int. 其中: Integ ...