5分求调

P7911 [CSP-J 2021] 网络连接

哥们,确定不用 STL 吗
by Dws_t7760 @ 2023-10-20 09:17:08


@[t7760](/user/776962) 这个怎么写
by x1489631649 @ 2023-10-20 09:18:59


@[x1489631649](/user/780505) 你或许可以用一下 map 和 sscanf 当然你如果想用哈希代替 map 也没问题(
by Dws_t7760 @ 2023-10-20 09:21:36


sscanf是什么 @[t7760](/user/776962)
by x1489631649 @ 2023-10-20 09:22:52


@[t7760](/user/776962) 如果都不会呢
by x1489631649 @ 2023-10-20 09:23:20


@[x1489631649](/user/780505) 不可以捏,总司令
by Dws_t7760 @ 2023-10-20 09:24:29


@[t7760](/user/776962) 活跃了,我会改了正在调
by x1489631649 @ 2023-10-20 09:31:01


@[t7760](/user/776962) 现在65了 ``` #include<bits/stdc++.h> using namespace std; int k[1005],l[1005],m[1005],n[1005],o[1005],flag2[1005]; int main() { // freopen("network.in","r",stdin); // freopen("network.out","w",stdout); string ch1,ch2; char f,g,h,j; int s=0,t; cin>>t; for(int i=1;i<=t;i++) { int a=0,b=0,c=0,d=0,e=0,flag3=0,flag=1; cin>>ch1>>ch2; if(ch2[0]==48&&ch2[1]!='.') flag3=1; for(int p=0;p<ch2.size();p++) { if(ch2[p]=='.'||ch2[p]==':') { if(flag==1) f=ch2[p]; if(flag==2) g=ch2[p]; if(flag==3) h=ch2[p]; if(flag==4) j=ch2[p]; flag++; } if((ch2[p]==48&&ch2[p-1]=='.'&&ch2[p+1]!='.'&&ch2[p+1]!=':')||(ch2[p]==48&&ch2[p-1]==':')) flag3=1; if(ch2[p]==48) { if(flag==1) a=a*10; if(flag==2) b=b*10; if(flag==3) c=c*10; if(flag==4) d=d*10; if(flag==5) e=e*10; } if(ch2[p]==49) { if(flag==1) a=a*10+1; if(flag==2) b=b*10+1; if(flag==3) c=c*10+1; if(flag==4) d=d*10+1; if(flag==5) e=e*10+1; } if(ch2[p]==50) { if(flag==1) a=a*10+2; if(flag==2) b=b*10+2; if(flag==3) c=c*10+2; if(flag==4) d=d*10+2; if(flag==5) e=e*10+2; } if(ch2[p]==51) { if(flag==1) a=a*10+3; if(flag==2) b=b*10+3; if(flag==3) c=c*10+3; if(flag==4) d=d*10+3; if(flag==5) e=e*10+3; } if(ch2[p]==52) { if(flag==1) a=a*10+4; if(flag==2) b=b*10+4; if(flag==3) c=c*10+4; if(flag==4) d=d*10+4; if(flag==5) e=e*10+4; } if(ch2[p]==53) { if(flag==1) a=a*10+5; if(flag==2) b=b*10+5; if(flag==3) c=c*10+5; if(flag==4) d=d*10+5; if(flag==5) e=e*10+5; } if(ch2[p]==54) { if(flag==1) a=a*10+6; if(flag==2) b=b*10+6; if(flag==3) c=c*10+6; if(flag==4) d=d*10+6; if(flag==5) e=e*10+6; } if(ch2[p]==55) { if(flag==1) a=a*10+7; if(flag==2) b=b*10+7; if(flag==3) c=c*10+7; if(flag==4) d=d*10+7; if(flag==5) e=e*10+7; } if(ch2[p]==56) { if(flag==1) a=a*10+8; if(flag==2) b=b*10+8; if(flag==3) c=c*10+8; if(flag==4) d=d*10+8; if(flag==5) e=e*10+8; } if(ch2[p]==57) { if(flag==1) a=a*10+9; if(flag==2) b=b*10+9; if(flag==3) c=c*10+9; if(flag==4) d=d*10+9; if(flag==5) e=e*10+9; } } if(a>255||b>255||c>255||d>255||e>65535||f!='.'||g!='.'||h!='.'||j!=':'||flag>5) flag3=1; if(flag3!=1) { if(ch1=="Server") { int flag1=0; for(int p=1;p<=s;p++) { if(a==k[p]&&b==l[p]&&c==m[p]&&d==n[p]&&e==o[p]) { cout<<"FAIL"<<endl; flag1=1; } } if(flag1==0) { cout<<"OK"<<endl; s++; k[s]=a,l[s]=b,m[s]=c,n[s]=d,o[s]=e,flag2[s]=i; } } else{ int flag1=0; for(int p=1;p<=s;p++) { if(a==k[p]&&b==l[p]&&c==m[p]&&d==n[p]&&e==o[p]) { cout<<flag2[p]<<endl; flag1=1; } } if(flag1==0) cout<<"FAIL"<<endl; } } else cout<<"ERR"<<endl; } return 0; }//Client 63.81.148.0:28810 Client 217.0.167.240:30040 ```
by x1489631649 @ 2023-10-20 09:54:24


@[x1489631649](/user/780505) 修改了,具体见注释 ```cpp #include<bits/stdc++.h> using namespace std; long long k[1005],l[1005],m[1005],n[1005],o[1005],flag2[1005]; int main() { // freopen("network.in","r",stdin); // freopen("network.out","w",stdout); string ch1,ch2; char f,g,h,j; long long s=0,t; cin>>t; for(long long i=1;i<=t;i++) { long long a=0,b=0,c=0,d=0,e=0,flag3=0,flag=1; cin>>ch1>>ch2; // if(ch2[0]==48&&ch2[1]!='.') flag3=1; // for(long long p=0;p<ch2.size();p++) // { // if(ch2[p]=='.'||ch2[p]==':') // { // if(flag==1) // f=ch2[p]; // if(flag==2) // g=ch2[p]; // if(flag==3) // h=ch2[p]; // if(flag==4) // j=ch2[p]; // flag++; // } // if((ch2[p]==48&&ch2[p-1]=='.'&&ch2[p+1]!='.'&&ch2[p+1]!=':')||(ch2[p]==48&&ch2[p-1]==':')) // flag3=1; // if(ch2[p]==48) // { // if(flag==1) a=a*10; // if(flag==2) b=b*10; // if(flag==3) c=c*10; // if(flag==4) d=d*10; // if(flag==5) e=e*10; // } // if(ch2[p]==49) // { // if(flag==1) a=a*10+1; // if(flag==2) b=b*10+1; // if(flag==3) c=c*10+1; // if(flag==4) d=d*10+1; // if(flag==5) e=e*10+1; // } // if(ch2[p]==50) // { // if(flag==1) a=a*10+2; // if(flag==2) b=b*10+2; // if(flag==3) c=c*10+2; // if(flag==4) d=d*10+2; // if(flag==5) e=e*10+2; // } // if(ch2[p]==51) // { // if(flag==1) a=a*10+3; // if(flag==2) b=b*10+3; // if(flag==3) c=c*10+3; // if(flag==4) d=d*10+3; // if(flag==5) e=e*10+3; // } // if(ch2[p]==52) // { // if(flag==1) a=a*10+4; // if(flag==2) b=b*10+4; // if(flag==3) c=c*10+4; // if(flag==4) d=d*10+4; // if(flag==5) e=e*10+4; // } // if(ch2[p]==53) // { // if(flag==1) a=a*10+5; // if(flag==2) b=b*10+5; // if(flag==3) c=c*10+5; // if(flag==4) d=d*10+5; // if(flag==5) e=e*10+5; // } // if(ch2[p]==54) // { // if(flag==1) a=a*10+6; // if(flag==2) b=b*10+6; // if(flag==3) c=c*10+6; // if(flag==4) d=d*10+6; // if(flag==5) e=e*10+6; // } // if(ch2[p]==55) // { // if(flag==1) a=a*10+7; // if(flag==2) b=b*10+7; // if(flag==3) c=c*10+7; // if(flag==4) d=d*10+7; // if(flag==5) e=e*10+7; // } // if(ch2[p]==56) // { // if(flag==1) a=a*10+8; // if(flag==2) b=b*10+8; // if(flag==3) c=c*10+8; // if(flag==4) d=d*10+8; // if(flag==5) e=e*10+8; // } // if(ch2[p]==57) // { // if(flag==1) a=a*10+9; // if(flag==2) b=b*10+9; // if(flag==3) c=c*10+9; // if(flag==4) d=d*10+9; // if(flag==5) e=e*10+9; // } // } a=b=c=d=e=-1; char temp[1000]="";//sscanf 函数必须是char 类型数组 for(long long j=0;j<ch2.length();j++) temp[j]=ch2[j]; temp[ch2.length()]=0,flag3=0; int s1=0,s2=0; /*检查. 和 : 数量是否合法*/ for(int j=0;j<ch2.length();j++) { if(ch2[j]=='.') s1++; else if(ch2[j]==':') s2++; if(s2==1&&s1!=3) flag3=1; } if(s1!=3||s2!=1) flag3=1; /*字符转整数*/ sscanf(temp,"%lld.%lld.%lld.%lld:%lld",&a,&b,&c,&d,&e); /*检查每个数是否超出范围*/ if(a>255||b>255||c>255||d>255||e>65535||a<0||b<0||c<0||d<0||e<0) flag3=1; /*检查是否有前导零*/ for(int j=0;j<ch2.length();j++) { if(ch2[j]=='0') { if((j==0||ch2[j-1]<'0'||ch2[j-1]>'9')&&(ch2[j+1]>='0'&&ch2[j+1]<='9')) { flag3=1; } } } /*下面的都没有问题*/ if(flag3!=1) { if(ch1=="Server") { long long flag1=0; for(long long p=1;p<=s;p++) { if(a==k[p]&&b==l[p]&&c==m[p]&&d==n[p]&&e==o[p]) { cout<<"FAIL"<<endl; flag1=1; } } if(flag1==0) { cout<<"OK"<<endl; s++; k[s]=a,l[s]=b,m[s]=c,n[s]=d,o[s]=e,flag2[s]=i; } } else{ long long flag1=0; for(long long p=1;p<=s;p++) { if(a==k[p]&&b==l[p]&&c==m[p]&&d==n[p]&&e==o[p]) { cout<<flag2[p]<<endl; flag1=1; } } if(flag1==0) cout<<"FAIL"<<endl; } } else cout<<"ERR"<<endl; } return 0; }//Client 63.81.148.0:28810 Client 217.0.167.240:30040 ```
by Dws_t7760 @ 2023-10-20 10:23:59


@[t7760](/user/776962) 感谢你
by x1489631649 @ 2023-10-20 10:30:30


|