专栏文章
题解:CF2156F1 Strange Operation (Easy Version)
CF2156F1题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @minabx29
- 此快照首次捕获于
- 2025/12/01 23:09 3 个月前
- 此快照最后确认于
- 2025/12/01 23:09 3 个月前
答案中的 在哪?
在最靠前的同时作为前缀最小值的奇数处。我们把它先操作成 ,剩下的所有数相对大小全部不变。因此我们可以把这个元素扔掉,就贪心地变成 的子问题了。
复杂度 。
Code
CPP#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 条评论,欢迎与作者交流。
正在加载评论...