社区讨论

求助:赛时AC提交却只有40

P10788[NOI2024] 分数参与者 11已保存回复 17

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
17 条
当前快照
1 份
快照标识符
@lysqf7cp
此快照首次捕获于
2024/07/19 21:24
2 年前
此快照最后确认于
2024/07/19 22:45
2 年前
查看原帖
rt
CPP
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int ll
inline ll read(int M=1ll<<63){
	ll x=0;
	short f=1;
	char c=getchar();
	while(c>57||c<48){
		if(c==45) f=-1;
		c=getchar();
	}
	while(c<58&&c>47){
		x=(x<<1)+(x<<3)+(c^48);
		x%=M;
		c=getchar();
	}
	return x*f;
}
inline void write(ll x){
	if(x<0ll) putchar(45),x=~x+1;
	if(x>9ll) write(x/10);
	putchar(x%10|48);
}
int N=read();
map<string,int>T;
string _C[20005];
int id;
int L[12],C[12];
int q[12][122][12];
int _(string s){
	if(!T[s]) _C[T[s]=++id]=s;
	return T[s];
}
string s;
string __[15];
string ___[3];
int _r[15];
int R[15],RR[15];
int split(string _s,string *__s,char c){
	_s+=c;
	int len=_s.size(),pre=0,cnt=0;
	for(int i=0;i<len;i++){
		if(_s[i]==c){
			__s[++cnt]=s.substr(pre,i-pre);
			pre=i+1;
		}
	}
	return cnt;
}
signed main(){
	for(int ____=1;____<=N;____++){
		cin>>s;
		L[____]=read(),C[____]=read();
		RR[____]=_(s);
		for(int i=1;i<=L[____];i++){
			for(int j=1;j<=C[____];j++){
				cin>>s;
				q[____][i][j]=_(s);
			}
		}
	}
	int Q=read();
	while(Q--){
		cin>>s;//select
		cin>>s;
		int num=split(s,__,',');
		cin>>s;//from
		cin>>s;//WHERE
		int t=T[s],TT=t;//GETID
		for(int i=1;i<=N;i++) if(t==RR[i]){
			TT=i;
			break;
		}
		cin>>s;
		cin>>s;
		int CONSTANT_OF_2=split(s,___,'=');
		int _L=T[___[1]],val=T[___[2]],rl;
		for(int i=1;i<=C[TT];i++){
			if(_L==q[TT][1][i]) rl=i;
		}
		for(int i=1;i<=num;i++){
			int ____=T[__[i]];
			for(int j=1;j<=C[TT];j++){
				if(____==q[TT][1][j]) _r[i]=j;
			}
		}
		
		for(int ____=2;____<=L[TT];____++){
			if(q[TT][____][rl]==val){
				for(int i=1;i<=num;i++){
					cout<<_C[q[TT][____][_r[i]]]<<' ';
				}
				putchar(10);
			}
		}
	}
}

回复

17 条回复,欢迎继续交流。

正在加载回复...