- 阳子墨 的博客
8月集训 DAY12
- @ 2024-8-12 20:07:10
😄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;
}
}
}