P7911

没切
这题恶心的点死多……
首先,你这数据不能一次性让我把bug改完吗?浪费lg评测资源,该罚
然后

进入正题

我踩的坑

  1. 两种机用同一个编号
  2. 中间会爆int,要在过程中就判掉
  3. 开头可能出现.这种毒瘤玩楞

然后比2023 csp-j T3 好写多了

#include<bits/stdc++.h>
using namespace std;
string s1="Server";
map<string,int> ma;
bool g(string s){
	int i=0,p=0;
	bool flag=0;
	if(s[i]<'0'||s[i]>'9')return 0;
	for(;i<s.size();i++){
		if(s[i]=='.')break;
		else if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>255)return 0;
	}
	p=0;flag=0;
	if(s[++i]<'0'||s[i]>'9')return 0;
	if(i>=s.size())return 0;
	for(;i<s.size();i++){
		if(s[i]=='.')break;
		else if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>255)return 0;
	}
	p=0;flag=0;
	if(s[++i]<'0'||s[i]>'9')return 0;
	if(i>=s.size())return 0;
	for(;i<s.size();i++){
		if(s[i]=='.')break;
		else if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>255)return 0;
	}
	p=0;flag=0;
	if(s[++i]<'0'||s[i]>'9')return 0;
	if(i>=s.size())return 0;
	for(;i<s.size();i++){
		if(s[i]==':')break;
		else if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>255)return 0;
	}
	p=0;flag=0;
	if(s[++i]<'0'||s[i]>'9')return 0;
	if(i>=s.size())return 0;
	for(;i<s.size();i++){
		if(s[i]=='0'&&p==0){
			if(flag)return 0;
			flag=1;
		}else if(s[i]>='0'&&s[i]<='9'){
			if(flag)return 0;
			p=p*10+s[i]-'0';
		}else return 0;
		if(p>65535)return 0;
	}
	return 1;
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin>>n;
	freopen("1.out","w",stdout);
	for(int i=1;i<=n;i++){
		string op,ad;
		cin>>op>>ad;
		if(op==s1){
			if(g(ad)){
				if(ma[ad]) cout<<"FAIL\n";
				else ma[ad]=i,cout<<"OK\n";
			}else cout<<"ERR\n";
		}else{
			if(g(ad)){
				if(ma[ad]) cout<<ma[ad]<<'\n';
				else cout<<"FAIL\n";
			}else cout<<"ERR\n";
		}
	}
}
posted @ 2024-10-09 19:40  yzc_is_SadBee  阅读(2)  评论(0编辑  收藏  举报