CF1838A-Blackboard-List
1.AGC055
2.CF1838A-Blackboard-List
3.P7959 [COCI2014-2015#6] WTF 题解4.CF437E The Child and Polygon5.无所畏惧的求和题解6.[ROI 2018] Innophone 题解7.[SHOI2011]双倍回文 题解8.2023-02-02 比赛试题及题解9.AGC04310.AGC03311.「TAOI-2」Ciallo~(∠・ω< )⌒★ 题解12.CF题解合集13.CF98C Help Greg the Dwarf 题解14.恋爱入门教学题解15.[CSP-S2019] 树的重心 题解16.CSP-S2023 题解17.CSP-S2019 题解18.CSP-S2019 江西 题解19.YNOI 做题记20.NOIP2022 题解21.CF1900D - Small GCD 题解22.杂题记录题意简述
在黑板上有两个数字,进行如下操作 次:
- 每次在黑板上选择任意两个数,将两个数的差的绝对值写在黑板上。
这样你会得到一个长度为 的序列。
一共 组数据。
每组数据给定操作后的序列,需要你还原出最初写在黑板上的两个数。
虽然可能有多个答案,不过,你只需要输出其中任意一个可能中的一个数即可。
题解
简单题,分类讨论即可:
- 存在负数:由于后面写下的都是差的绝对值,不可能凑出负数,所以负数一定是最初的两个数之一。
- 不存在负数:很明显,两个正数的差的绝对值一定小于大的数的绝对值。也就是 。所以最大的那个数一定是最初的两个数之一。
于是代码就很好写了:
#include <iostream>
using namespace std;
void work(void) {
int n; cin >> n;
int mx = -0x7FFFFFFF, mn = 0x7FFFFFFF;
for (int x, i = 0; i < n; ++i) {
cin >> x;
if (x > mx) mx = x;
if (x < mn) mn = x;
}
cout << (mn < 0 ? mn : mx) << '\n';
}
int main(void) {
cin.tie(0)->sync_with_stdio(false);
int T; cin >> T;
while (T--) work();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App