NOIP2023 T2 WA ON test#2
  • 板块灌水区
  • 楼主Dioretsa
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/19 09:42
  • 上次更新2023/11/19 11:17:57
查看原帖
NOIP2023 T2 WA ON test#2
1034804
Dioretsa楼主2023/11/19 09:42

评测记录

#include<bits/stdc++.h>
#define MAXN 100010
using namespace std;
int c,t,n,m,a[MAXN],b[MAXN];
struct tribool{
    char u;
    int x,y;
}record[MAXN];
int tmp[MAXN];
int main(){
    cin>>c>>t;
    if(c==1||c==2||c>=5){
       while(t--){
            cin>>n>>m;
            for(int i=1;i<=m;i++){
                cin>>record[i].u>>record[i].x;
                if(record[i].u=='+'||record[i].u=='-') cin>>record[i].y;
            }
            for(int ans=0;ans<=n;ans++){
                bool flag=true;
                for(int i=0;i<=n-ans;i++){  
                    for(int j=1;j<=ans;j++) tmp[j]=0;
                    for(int j=ans+1;j<=ans+i;j++) tmp[j]=1;
                    for(int j=ans+i+1;j<=n;j++) tmp[j]=-1;
                    next_permutation(tmp+1,tmp+1+n);
                    do{
                        for(int j=1;j<=n;j++) a[j]=tmp[j],b[j]=tmp[j];
                        for(int j=1;j<=m;j++){
                            if(record[j].u=='U') b[record[j].x]=0;
                            if(record[j].u=='T') b[record[j].x]=1;
                            if(record[j].u=='F') b[record[j].x]=-1;
                            if(record[j].u=='+') b[record[j].x]=b[record[j].y];
                            if(record[j].u=='-') b[record[j].x]=(-1)*b[record[j].y];
                        }
                        flag=true;
                        for(int j=1;j<=n;j++){
                            if(a[j]!=b[j]){
                                flag=false;
                                break;
                            }
                        }
                        if(flag) break;
                    }while(next_permutation(tmp+1,tmp+1+n));
                    if(flag) break;
                }
                if(flag){
                    cout<<ans<<endl;
                    break;
                }
            }
        }
    }
    if(c==3||c==4){
        while(t--){
            char u;
            int x,ans=0;
            memset(a,0,sizeof(a));
            cin>>n>>m;
            for(int i=1;i<=m;i++){
                cin>>u>>x;
                if(u=='T') a[x]=1;
                if(u=='F') a[x]=0;
                if(u=='U') a[x]=-1;
            }
            for(int i=1;i<=n;i++) if(a[i]==-1) ans++;
            cout<<ans<<endl;
        }
    }
    return 0;
}
2023/11/19 09:42
加载中...