社区讨论
WA,AC必关!
P10032「Cfz Round 3」Mex of Sequence参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miimaby9
- 此快照首次捕获于
- 2025/11/28 16:45 3 个月前
- 此快照最后确认于
- 2025/11/29 15:10 3 个月前
自测无误,提交第二个点WA。
CPP#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int t,n,m;
pair<int,int> a[N];
int ans1[N],ans2[N],ans3[N];
int p,q;
// first: number; second: in-id
int main() {
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
a[0].first=-1;
a[0].second=0;
for(int i=1; i<=n; i++) {
scanf("%d",&a[i].first);
a[i].second=i;
}
// m=1
sort(a+1,a+n+1);
p=n,q=a[n].first;
for(int i=1; i<=n; i++) {
if(a[i].first>(a[i-1].first+1)) {
p=i-1;
q=a[p].first;
break;
}
}
for(int i=p+1; i<=n; i++) {
ans1[a[i].second]=q+1;
}
for(int i=1; i<=p; i++) {
if(a[i].first==a[i-1].first||a[i].first==a[i+1].first) {
ans1[a[i].second]=q+1;
} else {
ans1[a[i].second]=a[i].first;
}
}
// m=2
for(int i=1;i<=n;i++){
a[i].first=ans1[i];
a[i].second=i;
}
sort(a+1,a+n+1);
p=n,q=a[n].first;
for(int i=1; i<=n; i++) {
if(a[i].first>(a[i-1].first+1)) {
p=i-1;
q=a[p].first;
break;
}
}
for(int i=p+1; i<=n; i++) {
ans2[a[i].second]=q+1;
}
for(int i=1; i<=p; i++) {
if(a[i].first==a[i-1].first||a[i].first==a[i+1].first) {
ans2[a[i].second]=q+1;
} else {
ans2[a[i].second]=a[i].first;
}
}
// m=3
for(int i=1;i<=n;i++){
a[i].first=ans2[i];
a[i].second=i;
}
sort(a+1,a+n+1);
p=n,q=a[n].first;
for(int i=1; i<=n; i++) {
if(a[i].first>(a[i-1].first+1)) {
p=i-1;
q=a[p].first;
break;
}
}
for(int i=p+1; i<=n; i++) {
ans3[a[i].second]=q+1;
}
for(int i=1; i<=p; i++) {
if(a[i].first==a[i-1].first||a[i].first==a[i+1].first) {
ans3[a[i].second]=q+1;
} else {
ans3[a[i].second]=a[i].first;
}
}
// m>3
if(m==1){
for(int i=1;i<=n;i++){
printf("%d ",ans1[i]);
}
printf("\n");
continue;
}
m%=2;
m+=2;
if(m==2){
for(int i=1;i<=n;i++){
printf("%d ",ans2[i]);
}
printf("\n");
}
if(m==3){
for(int i=1;i<=n;i++){
printf("%d ",ans3[i]);
}
printf("\n");
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...