原定周三晚的时长3小时的比赛!在比赛刚结束的时候。lsd(老傻蛋)A了一个题!然后就十分可耻的!将比赛延长到五个小时!!!幸好过了20多分钟我们也A了,,,然后就赶紧回宿舍 了,,,
一开始我就读了G,差不多有了思路,,但是数太大,到1e1000了,,,我这java都要考试了,,但是没学大数,自己看了一点,但是没有学会,,只能传给荆大傻子,再想想思路代码什么的。
然后我先做的L,,我上来就是一发CE,,,语言重置成C的了。。
L,是个大水题
L代码:
#include<bits/stdc++.h>
using namespace std;
char ch[100005];
int T,l,r,n,m;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
scanf("%s",ch);
l=r=0;
for(int i=1;i<=m-1;i++)
{
if(ch[i]=='R') l++;
}
for(int i=m-1;i<=n-2;i++)
{
if(ch[i]=='L') r++;
}
printf("%d\n",min(l,r));
}
return 0;
}
荆大傻子又做C,WA了一发,然后A了
C也比较水
C代码:
#include<bits/stdc++.h>
using namespace std;
int T,l,r,n,m,ans,all;
int dfs(string S,string SS)
{
int l,t=0;
string x,s;
s=SS;
for(int i=0;i<=2;i++)
{
l=s.size();
for(int j=0;j<l;j++)
{
if(j>=l-2&&s[j]!=S[i]) x+=s[j];
else if(s[j]==S[i])
{
if(s[j+1]==s[j]&&s[j+2]==s[j])
{j+=2;t++;}
continue;
}
else x+=s[j];
}
s=x;
//cout<<S<<" "<<s<<" "<<t<<" "<<x<<endl;
x="";
}
return t;
}
int main()
{
string ch[10];
char chh[20];
scanf("%d",&T);
ch[0]="ago";
ch[1]="aog";
ch[2]="gao";
ch[3]="goa";
ch[4]="oag";
ch[5]="oga";
while(T--)
{
ans=1;
scanf("%s",chh);
for(int i=0;i<=5;i++)
{
ans=max(ans,dfs(ch[i],chh));
}
printf("%d\n",ans);
}
return 0;
}
然后队友做E,WA了一发后,我做M,
M是个概率的,比较好推,但是有个细节没注意,也WA了,
然后队友该E,A了
M代码:
#include<bits/stdc++.h>
using namespace std;
char s[200050];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,i,ans=0;
scanf("%d",&n);
scanf("%s",s);
bool f=0;
if(n<3)
{
printf("0\n");
continue;
}
for(i=0;i<n;i++)
{
if((i+3<n)&&s[i]=='C'&&s[i+1]=='C'&&s[i+2]=='P'&&s[i+3]=='C')
ans++;
if(!f)
{
if((i+3<n)&&s[i]=='P'&&s[i+1]=='C'&&s[i+2]=='P'&&s[i+3]=='C')
f=1;
if((i+3<n)&&s[i]=='C'&&s[i+1]=='C'&&s[i+2]=='P'&&s[i+3]=='P')
f=1;
if((i+3<n)&&s[i]=='C'&&s[i+1]=='C'&&s[i+2]=='C'&&s[i+3]=='C')
f=1;
}
}
if(s[0]=='C'&&s[1]=='P'&&s[2]=='C')
f=1;
if(s[n-3]=='C'&&s[n-2]=='C'&&s[n-1]=='C')
f=1;
if(s[n-3]=='C'&&s[n-2]=='C'&&s[n-1]=='P')
f=1;
if(f)
ans++;
printf("%d\n",ans);
}
return 0;
}
然后队友做G代码,我继续纸上改M
又WA了两发,找到特殊情况后就A了
M代码:
#include<bits/stdc++.h>
using namespace std;
int T,n,m,R,r,ans[115],num;
double z;
struct AA
{
int x,y,id;
double d;
bool operator<(const AA&aa) const
{
return d<aa.d;
}
}pos[115];
int main()
{
scanf("%d",&T);
while(T--)
{
num=0;
scanf("%d%d%d",&n,&R,&r);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&pos[i].x,&pos[i].y);
pos[i].d=sqrt(pos[i].x*pos[i].x*1.0+pos[i].y*pos[i].y*1.0);
pos[i].id=i;
}
sort(pos+1,pos+1+n);
ans[++num]=pos[1].id;
z=(R-r-r);
if(pos[1].d<z||(fabs(pos[1].d-z)<=0.000000000001))
{
for(int i=2;i<=n;i++)
{
if(pos[i].d>z) break;
ans[++num]=pos[i].id;
}
}
else
{
z=2*r-R;
if(pos[1].d<z||(fabs(pos[1].d-z)<=0.000000000001))
{
for(int i=2;i<=n;i++)
{
if(pos[i].d>z) break;
ans[++num]=pos[i].id;
}
}
else
{
for(int i=2;i<=n;i++)
{
if(pos[i].d>pos[1].d) break;
ans[++num]=pos[i].id;
}
}
}
sort(ans+1,ans+1+num);
printf("%d\n",num);
for(int i=1;i<num;i++)
{
printf("%d ",ans[i]);
}
printf("%d\n",ans[num]);
}
return 0;
}
然后我们一起做G。。我的思路,但是不会Java大数,,不得不一起做
细节又出了点问题,,WA了三发后终于A了,
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static BigInteger b[]=new BigInteger[5050];
public static int f(BigInteger o)
{
int l=0,r=5000,mid=-1;
while(true)
{
if(mid==(l+r)/2)
break;
mid=(l+r)/2;
if(o.compareTo(b[mid])>0||o.equals(b[mid]))
l=mid;
else
r=mid;
}
return mid;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int T=in.nextInt();
BigInteger x=BigInteger.ONE;
b[0]=BigInteger.ONE;
for(int i=1;i<=5000;i++)
{
b[i]=x.multiply(BigInteger.valueOf(2));
x=b[i];
}
while(T-->0)
{
BigInteger n,m,ans,t,tt;
n=in.nextBigInteger();
m=in.nextBigInteger();
ans=BigInteger.ZERO;
if(n.equals(BigInteger.ZERO))
{
System.out.println("0");
continue;
}
if(n.compareTo(m)<0||n.equals(m))
{
System.out.println("1");
continue;
}
while(true)
{
t=n.divide(m);
if((n.mod(m)).equals(BigInteger.ZERO))
{
ans=ans.add(t);
break;
}
int y=f(t);
if((b[y+1].subtract(BigInteger.ONE)).equals(t))
y=y+1;
ans=ans.add(b[y]);
tt=n;
n=n.subtract((b[y]).multiply(m));
if(n.compareTo(BigInteger.ZERO)<0)
n=tt.mod(b[y]);
//System.out.println(n+" "+m+" "+ans);
if(n.equals(BigInteger.ZERO))
break;
if(n.compareTo(m)<0||n.equals(m))
{
ans=ans.add(BigInteger.ONE);
break;
}
}
System.out.println(ans);
}
}
}