😄8月集训 DAY12

糖果

错误原因

思路

枚举肯定会超时 推公式 min(n-1,r-l+l%n)

r-l是这一段的区间长度,如果这大于n-1 就可以取n-1 再加上l%n是现在的余数 如果加上这个大于n-1 也可以取n-1

否则最大是 ,r-l+l%n

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	freopen("candy.in","r",stdin);
	freopen("candy.out","w",stdout);  
	int n,l,r;
	cin>>n>>l>>r;
	if(r-l+(l%n)>n-1) cout<<n-1;
	else cout<<r-l+(l%n);
}

网络

错误原因

没把存数字的开到unsignd long long 少了 第一个是.或:或最后一个是.或:

思路

直接模拟

代码

#include<bits/stdc++.h>
#define int unsigned long long int
using namespace std;
signed main()
{
	freopen("net.in","r",stdin);
	freopen("net.out","w",stdout);
    string op[1010],ad[1010];
    int n,a=0,b=255,flag,d1,d2;
    cin>>n;
    for(int i=1;i<=n;i++)   cin>>op[i]>>ad[i];
    for(int i=1;i<=n;i++)
    {
        if(op[i]=="Server")
        {
        	d1=0;
        	d2=0;
        	a=0;
            flag=0;
            b=255;
            for(int j=0;j<ad[i].size();j++)
            {
                if(ad[i][j]>='0'&&ad[i][j]<='9')
                {
                    a=a*10+(ad[i][j]-'0'); 
                  	if(a==0&&ad[i][j]=='0'&&ad[i][j+1]>='0'&&ad[i][j+1]<='9')
                    {
                    	cout<<"ERR"<<endl;
                        flag=1;
                        break;
					}
                }
                else if(ad[i][j]=='.'&&j!=0&&j!=ad[i].size()-1)
                {
                    if(a>b||ad[i][j-1]=='.'||ad[i][j-1]==':')
                    {
                        cout<<"ERR"<<endl;
                        flag=1;
                        break;
                    } 
                    d1++;
                    a=0;
                }
                else if(ad[i][j]==':'&&j!=0&&j!=ad[i].size()-1&&d1==3)
                {
                	
                    if(a>b||ad[i][j-1]=='.'||ad[i][j-1]==':')
                    {
                        cout<<"ERR"<<endl;
                        flag=1;
                        break;
                    }
                    a=0;
                    b=65535;
                    d2++;
                }
                else
                {
                	cout<<"ERR"<<endl;
                    flag=1;
                    break;
				}
            }
            if(flag) continue;
            if(a>b||d1!=3||d2!=1)
            {
                cout<<"ERR"<<endl;
                continue;
            }
            flag=0;
            for(int j=i-1;j>=1;j--)
            {
                if(ad[i]==ad[j]&&op[j]=="Server")
                {
                    flag=1;
                    cout<<"FAIL"<<endl;
                    break;
                }
            }
            if(flag) continue;
            cout<<"OK"<<endl;
        }
        else
        {
        	d1=0;
        	d2=0;
            a=0;
            flag=0;
            b=255;
            for(int j=0;j<ad[i].size();j++)
            {
                if(ad[i][j]>='0'&&ad[i][j]<='9')
                {
                    a=a*10+(ad[i][j]-'0');
                    if(a==0&&ad[i][j]=='0'&&ad[i][j+1]>='0'&&ad[i][j+1]<='9')
                    {
                    	cout<<"ERR"<<endl;
                        flag=1;
                        break;
					}
                }
                else if(ad[i][j]=='.'&&j!=0&&j!=ad[i].size()-1)
                {
                    if(a>b||ad[i][j-1]=='.'||ad[i][j-1]==':')
                    {
                        cout<<"ERR"<<endl;
                        flag=1;
                        break;
                       
                    } 
                    a=0;
                    d1++;
                }
                else if(ad[i][j]==':'&&j!=0&&j!=ad[i].size()-1&&d1==3)
                {
                	
                    if(a>b||ad[i][j-1]=='.'||ad[i][j-1]==':')
                    {
                        cout<<"ERR"<<endl;
                        flag=1;
                        break;
                    }
                    a=0;
                    b=65535;
                    d2++;
                }
                else
                {
                	cout<<"ERR"<<endl;
                    flag=1;
                    break;
				}
            }
            if(flag) continue;
            if(a>b||d1!=3||d2!=1)
            {
                cout<<"ERR"<<endl;
                continue;
            }
            for(int j=1;j<=i-1;j++)
            {
                if(ad[i]==ad[j]&&op[j]=="Server")
                {
                    flag=1;
                    cout<<j<<endl;
                    break;
                }
            }
            if(!flag) cout<<"FAIL"<<endl;
        }
    }
}