Codeforces Global Round 26 题解分享

A. Strange Splitting

思路

贪心

将题目中的红色元素范围不等于蓝色元素范围改成红色元素范围小于蓝色范围其实是一样的

那么红色元素范围最小是0,要占据一个元素。然后我们只要从数组中找到两个不同的元素就能够使得蓝色元素范围大于0,满足题意。

题目中的 n 是大于等于3的,并且数组是单增的。说明只要数组不是全都是一样的就可以满足上述要求。

code

复制代码
inline void solve() {
     int n; cin >> n;
     vector<int> a(n);
     for (auto &x : a) cin >> x;
     if (a[0] != a[n - 1]) {
     	cout << "YES\n";
     	string s = string(n, 'B');
     	s[1] = 'R';
     	cout << s << endl;
     }else cout << "NO\n";
	 return;
}

B. Large Addition

思路

模拟

题目要求数位是大数 ,并且两个数的位数相同

很简单的,两个数相加的时候,必然每次都进位

但是[5,9]范围里的两个数相加肯定不会出现个数上是9的,还有开头元素一定是1。

注意判断 + 代码模拟相加即可。

code

cpp 复制代码
inline void solve() {
     ll x; cin >> x;
     while (x) {
     	if (x > 0 && x < 10 || x % 10 == 9) return cout << "NO\n", void();
     	x /= 10;
     	x -= 1;
     }
     cout << "YES\n";
	 return;
}

C1. Magnitude (Easy Version)

思路

dp

我们定义 dp[i][2]。其中dp[i][0]维护到i个构成的最小值,dp[i][1]维护到i个构成的最大值。

对于 dp[i][0] 我们是不会使用option2的,这只会使得它变大,只会用option1

转移为 dp[i][0] = dp[i - 1][0] + a[i]

而对于 dp[i][1] 我们还要考虑 option2 的情况,即最小值加个绝对值的情况,

使用option1的话,a[i] 肯定是跟dp[i - 1][1]的,option2 肯定是跟 dp[i - 1][0]的

所以转移方程为

dp[i][1] = max({dp[i][1], dp[i - 1][1] + a[i] , abs(dp[i - 1][0] + a[i])})

所以得到了 dp[n][1] 作为最终答案

code

cpp 复制代码
const int N = 2e5 + 9;
ll dp[N][2]; // 前i个的维护的最大和最小值
inline void solve() {
     int n; cin >> n;
     vector<ll> a(n + 1);
     for (int i = 1; i <= n; i ++ ) cin >> a[i], dp[i][1] = 0;
     for (int i = 1; i <= n; i ++ ) {
     	dp[i][0] = dp[i - 1][0] + a[i];
     	dp[i][1] = max({dp[i][1], abs(dp[i - 1][0] + a[i]), dp[i - 1][1] + a[i]});
     }
     cout << dp[n][1] << endl;
	 return;
}
相关推荐
简简单单做算法1 小时前
基于mediapipe深度学习和限定半径最近邻分类树算法的人体摔倒检测系统python源码
人工智能·python·深度学习·算法·分类·mediapipe·限定半径最近邻分类树
Tisfy2 小时前
LeetCode 2360.图中的最长环:一步一打卡(不撞南墙不回头) - 通过故事讲道理
算法·leetcode··题解
LuckyAnJo2 小时前
Leetcode-100 链表常见操作
算法·leetcode·链表
双叶8364 小时前
(C语言)虚数运算(结构体教程)(指针解法)(C语言教程)
c语言·开发语言·数据结构·c++·算法·microsoft
工一木子4 小时前
大厂算法面试 7 天冲刺:第5天- 递归与动态规划深度解析 - 高频面试算法 & Java 实战
算法·面试·动态规划
invincible_Tang5 小时前
R格式 (15届B) 高精度
开发语言·算法·r语言
独好紫罗兰6 小时前
洛谷题单2-P5715 【深基3.例8】三位数排序-python-流程图重构
开发语言·python·算法
序属秋秋秋7 小时前
算法基础_基础算法【高精度 + 前缀和 + 差分 + 双指针】
c语言·c++·学习·算法
玉树临风ives7 小时前
leetcode 2360 图中最长的环 题解
算法·leetcode·深度优先·图论
KeithTsui7 小时前
GCC RISCV 后端 -- 控制流(Control Flow)的一些理解
linux·c语言·开发语言·c++·算法