求条D题,抽象写法
查看原帖
求条D题,抽象写法
1073995
Saint_ying_xtf楼主2024/1/27 21:56
//Author: gsczl71
//Copyright (c) 2024 gsczl71 All rights reserved.

#include<bits/stdc++.h>
#define ll long long
#define i128 __int128
#define ull unsigned long long
#define pii pair<int,int>
#define pll pair<long long, long long>
#define fs first
#define sc second
#define endl '\n'
#define debug puts("AK IOI")
#define re register
#define pb push_back
#define mem(a,x) memset((a),(x),sizeof(a))
#define vi vector<int>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
//const int mod = 998244353;
const int inf = 0x3f3f3f3f, N = 8e5 + 5, M = 2e5 + 5;
const ll linf = 0x3f3f3f3f3f3f3f3f;
int n, m;
int x[N];
int q[N];
int ans = 1e9;
void solve() {
	cin >> n >> m;
	for (int i = 1; i <= m; i++)cin >> x[i];
	int sum = 0;
	for (int i = 2; i <= m; i++) {
		if (x[i] > x[i - 1]) {
			sum += min((x[i - 1] + n - x[i]), x[i] - x[i - 1]);
			if ((x[i - 1] + n - x[i]) == x[i] - x[i - 1]) continue;
			else if ((x[i - 1] + n - x[i]) < x[i] - x[i - 1]) {
				int len = (x[i - 1] + n - x[i]);
				q[x[i]] += (n - len - len);
				q[x[i - 1] + n + 1] -= (n - len - len);
			} else {
				int len = x[i] - x[i - 1];
				q[x[i - 1]] +=  (n - len - len);
				q[x[i] + 1] -= (n - len - len);
			}
		} else {
			sum += min((x[i] + n - x[i - 1]), x[i - 1] - x[i]);
			if ((x[i] + n - x[i - 1]) == x[i - 1] - x[i]) continue;
			else if ((x[i] + n - x[i - 1]) < x[i - 1] - x[i]) {
				int len = (x[i] + n - x[i - 1]);
				q[x[i - 1]] += (n - len - len);
				q[x[i] + n + 1] -= (n - len - len);
			} else {
				int len = x[i - 1] - x[i];
				q[x[i] ] +=  (n - len - len);
				q[x[i - 1]  + 1] -=  (n - len - len);
			}
		}
	}

	for (int i = 1; i <= 3 * n; i++) {
		q[i] += q[i - 1];
	}
	for (int i = 1; i < n; i++) {
		int len = n;
		int tmp = sum + q[i + 1]+ q[i + len + 1] + q[i + len + len + 1] ;
		ans = min(ans, tmp);
	}cout<<ans;
}
signed main() {
	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
	int T = 1;
//	cin >> T;
	while (T--) solve();
	return 0;
}

2024/1/27 21:56
加载中...