【暴力剪枝】CF1708D

https://codeforces.com/contest/1708/problem/D

题意

思路

这样的操作下,数列减的速度是非常快的 ,也就是说,易出现很多的0,0的操作没啥意义,所以我们要找到第一个 >0 的数对其后的序列进行排序,就能大大减少复杂度

这道题告诉我们实在没思路可以猜个暴力剪枝的做法

Code:

cpp 复制代码
#include <bits/stdc++.h>

#define int long long

constexpr int N = 2e5 + 10;
constexpr int mod = 998244353;

int n;
int a[N];

void solve() {
	std::cin >> n;
	for (int i = 1; i <= n; i ++) {
		std::cin >> a[i];
	}
	int pos = 0;
	for (int i = 1; i <= n; i ++) {
		if (a[i]) {
			pos = i - 1;
			break;
		}
	}
	while(n > 1) {
		for (int i = std::max(pos, 1ll); i <= n; i ++) {
			a[i] = a[i + 1] - a[i];
		}
		n --;
		std::sort(a + pos, a + 1 + n);
		pos = std::upper_bound(a + 1, a + 1 + n, 0) - a - 1;
		if (pos == n - 1) break;
	}
	std::cout << a[n] << "\n";
}
signed main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	int t = 1;
	std::cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}
相关推荐
香蕉鼠片7 小时前
数据结构八股(一)
数据结构·算法
Mr_Xuhhh7 小时前
从理论到实践:深入理解算法的时间与空间复杂度
java·开发语言·算法
6Hzlia7 小时前
【Hot 100 刷题计划】 LeetCode 42. 接雨水 | C++ 动态规划与双指针题解
c++·算法·leetcode
地平线开发者8 小时前
智能驾驶感知算法的演进
算法·自动驾驶
爱丽_8 小时前
B+ 树范围查询为什么快:页分裂/合并、索引设计与 SQL 写法优化
数据库·算法·哈希算法
WBluuue8 小时前
Codeforces 1087 Div2(ABCDEF)
c++·算法
Yzzz-F8 小时前
2025 ICPC武汉邀请赛 G [根号分治 容斥原理+DP]
算法
abant29 小时前
leetcode 114 二叉树变链表
算法·leetcode·链表
tankeven9 小时前
HJ165 小红的优惠券
c++·算法
先积累问题,再逐次解决9 小时前
快速幂优美算法
算法