这数据有点问题吧?
查看原帖
这数据有点问题吧?
93213
向日葵小班楼主2022/10/31 13:41

有没有按照那个范围出呢 垃圾

我的代码是准确命中1-4,7,15-17的样例,但是luogu估分只有5分,有没有可能出(1),(1&0)类似这种阴间样例呢, 有没有可能长度为4呢

贴代码:

#include<bits/stdc++.h>
using namespace std;
string a;
long long s,ss,sss,b[1000050],c[100050],l,h,hh,d=-10,dd=-10,k,kkk,kk;
int main(){
	freopen("expr.in","r",stdin);
	freopen("expr.out","w",stdout);
	getline(cin,a);
	if(a.size()<=3){
		if(a[1]=='&'){
			if(a[0]=='1'&&a[2]=='0'){
				cout<<0<<endl<<1<<" "<<0;
				return 0;
			}
			if(a[0]=='1'&&a[2]=='1'){
				cout<<1<<endl<<1<<" "<<0;
				return 0;
			}
			if(a[0]=='0'&&a[2]=='1'){
				cout<<0<<endl<<0<<" "<<0;
				return 0;
			}
			if(a[0]=='0'&&a[2]=='0'){
				cout<<0<<endl<<0<<" "<<0;
				return 0;
			}
		}
		if(a[1]=='|'){
			if(a[0]=='1'&&a[2]=='1'){
				cout<<1<<endl<<0<<" "<<1;
				return 0;
			}
			if(a[0]=='1'&&a[2]=='0'){
				cout<<1<<endl<<0<<" "<<1;
				return 0;
			}
			if(a[0]=='0'&&a[2]=='1'){
				cout<<1<<endl<<0<<" "<<0;
				return 0;
			}
			if(a[0]=='0'&&a[2]=='0'){
				cout<<0<<endl<<0<<" "<<0;
				return 0;
			}
		}
	}
	if(a.size()==5){
		if(a[1]=='&'&&a[3]=='&'){
			long long t=0;
			if(a[0]=='1'){
				ss++;
			}
			if(a[0]=='0'||a[2]=='0'){
				t=1;
			}
			if(t==1){
				cout<<0<<endl<<ss<<' '<<0;
				return 0;
			}
			else{
				ss++;
				if(a[4]=='0'){
					cout<<'0'<<endl<<ss<<' '<<0; 
					return 0;
				} 
				else{
					cout<<'1'<<endl<<ss<<' '<<0; 
					return 0;
				}
			}
		}
		if(a[1]=='&'&&a[3]=='|'){
			long long t=0;
			if(a[0]=='1'){
				ss++;
			}
			if(a[0]=='0'||a[2]=='0'){
				t=1;
			}
			if(t==1){
				if(a[4]=='0'){
					cout<<0<<endl<<0<<' '<<0;
					return 0;
				}
				if(a[4]=='1'){
					cout<<1<<endl<<0<<' '<<0;
					return 0;
				}
			}
			else{
				sss++;
				if(a[4]=='0'){
					cout<<'1'<<endl<<ss<<' '<<sss; 
					return 0;
				} 
				else{
					cout<<'1'<<endl<<ss<<' '<<sss; 
					return 0;
				}
			}
		}
	if(a[1]=='|'&&a[3]=='&'){
			long long t=0;
			if(a[2]=='1'){
				ss++;
			}
			if(a[2]=='0'||a[4]=='0'){
				t=1;
			}
			if(t==1){
				if(a[0]=='0'){
					cout<<0<<endl<<ss<<' '<<0;
					return 0;
				}
				if(a[0]=='1'){
					cout<<1<<endl<<ss<<' '<<1;
					return 0;
				}
			}
			else{
				sss++;
				if(a[0]=='0'){
					cout<<'1'<<endl<<1<<' '<<0; 
					return 0;
				} 
				else{
					cout<<'1'<<endl<<ss<<' '<<sss; 
					return 0;
				}
			}
		}
	if(a[1]=='|'&&a[3]=='|'){
			long long t=0;
			if(a[0]=='1'){
				ss++;
			}
			if(a[0]=='0'&&a[2]=='0'){
				t=1;
			}
			if(t==1){
				if(a[4]=='1'){
					cout<<'1'<<endl<<0<<' '<<0;
					return 0; 
				}
				if(a[4]=='0'){
					cout<<'0'<<endl<<0<<' '<<0;
					return 0;  
				}
			}
			else{
				ss++;
				if(a[4]=='0'){
					cout<<'1'<<endl<<0<<' '<<2; 
					return 0;
				} 
				else{
					cout<<'1'<<endl<<0<<' '<<2; 
					return 0;
				}
			}
	}
}
	for(int i=0;i<a.size();i++){
		if(a[i]=='('){
			s++;
			b[i+1]=4;
		}	
		if(a[i]==')'){
			s++;
			b[i+1]=5;
		}		
		if(a[i]=='&'){
			ss++; 
			b[i+1]=2;
			if(i+1>d)d=i+1;
		}
		if(a[i]=='|'){
			sss++;
			b[i+1]=3;
			if(i+1>dd)dd=i+1;
		}
		if(a[i]=='1')b[i+1]=1;
		if(a[i]=='0')b[i+1]=0;
	}
	if(s==0){
		
		if(sss==0){
			k=1;
		}
		if(ss==0){
			k=2;
		}
		for(int i=1;i<=a.size();i++){
			if(b[i]==2){
				if(b[i-1]==1){
					h++;
					if(b[i+1]==1){b[i-1]=1,b[i]=1,b[i+1]=1;}
					else if(b[i+1]==0){b[i-1]=0,b[i]=0,b[i+1]=0;}
				}
				else if(b[i-1]==0){b[i-1]=0,b[i]=0,b[i+1]=0;}
				if(k==1&&i==d){
					cout<<b[i+1]<<endl<<h<<" "<<0;
					return 0;
				}
			}
		}
		
		for(int i=1;i<=a.size();i++){
			if(b[i]==3){
				
				if(b[i-1]==1){
					hh++;
				if(b[i+1]==1){b[i-1]=1,b[i]=1,b[i+1]=1;}
				else if(b[i+1]==0){b[i-1]=1,b[i]=1,b[i+1]=1;}
					}
				else if(b[i-1]==0){
					if(b[i+1]==1){
					b[i-1]=1,b[i]=1,b[i+1]=1;}
					else if(b[i+1]==0){
					b[i-1]=0,b[i]=0,b[i+1]=0;}
				}
				if(k==2&&i==dd){
					cout<<b[i+1]<<endl<<0<<" "<<hh;
					return 0;
				}
				if(i==dd){
					cout<<b[i+1]<<endl<<h<<" "<<hh;
					return 0;
				}
			}
			
		}
		
	}
	
	return 0;
}
//6*8+1
2022/10/31 13:41
加载中...