社区讨论
本以为想出一个完美的解法,结果0pts直接给我干懵了
P11501 [ROIR 2019 Day 2] 探险队参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m5i969ak
- 此快照首次捕获于
- 2025/01/04 22:02 去年
- 此快照最后确认于
- 2025/01/05 11:22 去年
为什么啊
CPP#include<iostream>
using namespace std;
int main(){
int n;cin>>n;
int a[n];
long long x[n];
long long temp=0;
for(int i=0;i<n;i++)temp+=1<<i;
for(int i=0;i<n;i++){cin>>a[i];x[i]=temp;}
for(int i=0;i<n;i++){
if(a[i]==-1){
for(int j=0;j<n;j++){
if(i==j)continue;
if(x[j]>>i&1)x[j]-=1<<i;
if(x[i]>>j&1)x[i]-=1<<j;
}
}else{
if(x[i]>>(a[i]-1)&1)x[i]-=1<<(a[i]-1);
if(x[a[i]-1]>>i&1)x[a[i]-1]-=1<<i;
}
}
int ans=0,maxans=0;
for(int i=0;i<n;i++){
if(a[i]==-1)continue;
ans=0;
for(int j=0;j<n;j++){
if(x[j]>>i&1)x[j]=x[j]&x[i];
if(x[i]>>j&1)ans++;
}
if(ans>maxans)maxans=ans;
}
cout<<maxans<<endl;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...