社区讨论

80pts求教

P7911[CSP-J 2021] 网络连接参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@lobbwx5h
此快照首次捕获于
2023/10/29 18:29
2 年前
此快照最后确认于
2023/11/04 00:18
2 年前
查看原帖

讲个笑话我做了三天

CPP
#include<iostream>
#include<cstdio>
#include<cstring>
#define rg register
using namespace std;

int n,cn=0;
long long a[1010][10],t[10],b[10];
char c[10],s[100];

inline int len(long long x)
{
	if(x==0) return 1;
	int l=0; long long temp=x;
	while(temp)
	 {
	 	temp/=10;
	 	l++;
	 }
	return l;
}

int main()
{

	cin>>n; getchar();
	for(rg int i=1;i<=n;i++)
	 {
	 	scanf("%s %s",c+1,s+1); 
		 
		int l=strlen(s+1),cnt=1; bool f=1;
		s[l+1]='.'; b[1]=b[2]=b[3]=b[4]=b[5]=0;
		
		for(rg int j=1;j<=l+1;j++)
		 {
		 	if(s[j]=='.'||s[j]==':') 
		 	 {
		 	 	t[cnt]=j;
		 	 	cnt++;
		 	 }
		 	else b[cnt]=b[cnt]*10+s[j]-'0';
		 }
		
		if(b[1]>255||b[2]>255||b[3]>255||b[4]>255||b[5]>65535) f=0;
		
		if(f)
		 {
		 	for(rg int j=2;j<=cnt;j++)
		 	 {
		 	 	int x=j-1;
		 	 	if(len(b[x])<t[x]-t[x-1]-1) f=0;
		 	 	if(x<=3&&s[t[x]]!='.'||x==4&&s[t[x]]!=':') f=0;
		 	 	if(f==0) break;
		 	 }
		 }
	    
	    if(f)
	     {
	     	if(c[1]=='S')
		     {
		     	rg int j;
	    		for(j=1;j<=cn;j++)
				 if(a[j][1]==b[1]&&a[j][2]==b[2]&&a[j][3]==b[3]&&a[j][4]==b[4]&&a[j][5]==b[5]) break;
				if(j>cn)
				 {
				 	puts("OK");
				 	cn++;
				 	a[cn][1]=b[1]; a[cn][2]=b[2]; a[cn][3]=b[3]; a[cn][4]=b[4]; a[cn][5]=b[5];
					a[cn][6]=i;
				 }
				else puts("FAIL");
		     }
		    if(c[1]=='C')
		     {
		     	rg int j;
	    		for(j=1;j<=cn;j++)
				 if(a[j][1]==b[1]&&a[j][2]==b[2]&&a[j][3]==b[3]&&a[j][4]==b[4]&&a[j][5]==b[5]) break;
				if(j<=cn) printf("%lld\n",a[j][6]);
				 else puts("FAIL");
		     }
	     }
	    else puts("ERR");
	 }
	
	return 0;
}
救救孩子阿巴阿巴阿巴

回复

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

正在加载回复...