互联网建站是什么,北京网站设计十年乐云seo,运营商网站登录注册,成都网站开发团队传送门 文章目录题意#xff1a;思路#xff1a;题意#xff1a; 思路#xff1a;
首先有一个显然的性质就是每组操作最多不会超过两次。 很容易想到一个很暴力的思路#xff0c;就是枚举x∈[1,2∗k]x \in [1,2*k]x∈[1,2∗k]#xff0c;让后判断一下每组需要操作几次取…传送门
文章目录题意思路题意 思路
首先有一个显然的性质就是每组操作最多不会超过两次。 很容易想到一个很暴力的思路就是枚举x∈[1,2∗k]x \in [1,2*k]x∈[1,2∗k]让后判断一下每组需要操作几次取最小值。这样复杂度O(nk)O(nk)O(nk)显然不能接受。 考虑反方向通过枚举nnn来判断对每个iii来说如果最终变成xxx要操作多少次分以下三种情况 (1)xa[i]a[n−i1](1) xa[i]a[n-i1](1)xa[i]a[n−i1]显然操作000次即可。 (2)x∈[min(a[i],a[n−i1])1,max(a[i],a[i1])k](2) x \in [min(a[i],a[n-i1])1,max(a[i],a[i1])k](2)x∈[min(a[i],a[n−i1])1,max(a[i],a[i1])k]操作一次即可。 (3)(3)(3)其余情况操作222次。 以上区间加操作显然可以用差分来实现。 复杂度O(n)O(n)O(n)。
// Problem: D. Constant Palindrome Sum
// Contest: Codeforces - Codeforces Round #636 (Div. 3)
// URL: https://codeforces.com/contest/1343/problem/D
// Memory Limit: 256 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize(Ofast,no-stack-protector,unroll-loops,fast-math)
//#pragma GCC target(sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tunenative)
//#pragma GCC optimize(2)
#includecstdio
#includeiostream
#includestring
#includecstring
#includemap
#includecmath
#includecctype
#includevector
#includeset
#includequeue
#includealgorithm
#includesstream
#includectime
#includecstdlib
#includerandom
#includecassert
#define X first
#define Y second
#define L (u1)
#define R (u1|1)
#define pb push_back
#define mk make_pair
#define Mid ((tr[u].ltr[u].r)1)
#define Len(u) (tr[u].r-tr[u].l1)
#define random(a,b) ((a)rand()%((b)-(a)1))
#define db puts(---)
using namespace std;//void rd_cre() { freopen(d://dp//data.txt,w,stdout); srand(time(NULL)); }
//void rd_ac() { freopen(d://dp//data.txt,r,stdin); freopen(d://dp//AC.txt,w,stdout); }
//void rd_wa() { freopen(d://dp//data.txt,r,stdin); freopen(d://dp//WA.txt,w,stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pairint,int PII;const int N1000010,mod1e97,INF0x3f3f3f3f;
const double eps1e-6;int n,k;
int a[N],ans[N];
// a[i]a[n-i1] --
// [min(a[i],a[n-i1])1,max(a[i],a[n-i1])k] --int solve() {for(int i1;ik*2;i) ans[i]0;ans[1]n;for(int i1;in/2;i) {int mimin(a[i],a[n-i1]),mxmax(a[i],a[n-i1]);ans[a[i]a[n-i1]]--; ans[a[i]a[n-i1]1];ans[mi1]--; ans[mxk1];}int resINF;for(int i1;i2*k;i) ans[i]ans[i-1],resmin(res,ans[i]);return res;
}int main()
{
// ios::sync_with_stdio(false);
// cin.tie(0);int _; scanf(%d,_);while(_--) {scanf(%d%d,n,k);for(int i1;in;i) scanf(%d,a[i]);printf(%d\n,solve());}return 0;
}
/**/