专栏文章

题解:CF2156F1 Strange Operation (Easy Version)

CF2156F1题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@minabx29
此快照首次捕获于
2025/12/01 23:09
3 个月前
此快照最后确认于
2025/12/01 23:09
3 个月前
查看原文
答案中的 11 在哪?
在最靠前的同时作为前缀最小值的奇数处。我们把它先操作成 11,剩下的所有数相对大小全部不变。因此我们可以把这个元素扔掉,就贪心地变成 n1n-1 的子问题了。
复杂度 O(n2)O(n^2)
CodeCPP
#include<bits/stdc++.h>
using namespace std;

#define int long long
#define MAXN 1000005

int n,k,a[MAXN],r[MAXN],ans[MAXN];

inline void solve(){
	scanf("%lld",&n);
	for( int i = 1 ; i <= n ; i ++ ) scanf("%lld",&r[i]);
	for( int t = 1 ; t <= n ; t ++ ){
		int minn = n + 1;
		for( int i = 1 ; i <= n ; i ++ ){
			if( r[i] % 2 && r[i] < minn ){
				for( int j = 1 ; j <= n ; j ++ ) if( r[j] > r[i] ) r[j] --;
				ans[i] = t,r[i] = (int)1e9;
				break;
			}
			minn = min( minn , r[i] );
		}
	}
	for( int i = 1 ; i <= n ; i ++ ) printf("%lld ",ans[i]); puts("");
}

signed main(){
	int testcase; scanf("%lld",&testcase);
	while( testcase -- ) solve();
	return 0;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...