补没做出来能补的或者有坑的题
E- Enjoy the game
题目数据及要求:
解法:就是找规律的题,我找的时候又算错了,服了自己了,规律就是2的n的式子则先手没有必胜策略,其他的则先手有必胜策略
代码:
#include<bits/stdc++.h>
const long long k=1e9;
using namespace std;
int main()
{
long long n;
cin>>n;
long long a=2;
for(int i=1;i<=60;i++)
{
if(a==n)
{
cout<<"Alice"<<endl;
return 0;
}
a=a*2;
}
cout<<"Bob"<<endl;
}
I-I题是个签到题
题目数据及要求:
赛中补充:可以是并列的前三,按照正常的逻辑顺序排序
解法:这个正常的逻辑顺序就很迷,其实就是比I题过的多的人数不超过两个
代码:
#include<bits/stdc++.h>//就是比他多的不超过2道
using namespace std;
struct w{
int index;
int x;
friend bool operator <(w a, w b)
{
return a.x>b.x;
}
}a[1010];
int p[5];
int main()
{
bool flag1=false,flag2=false;
int n,m,k,index=1,u,sum=0;
cin>>n>>m;
k=ceil(0.8*m);
for(int i=1;i<=n;i++)
{
cin>>a[i].x;
a[i].index=i;
}
u=a[9].x;
if(a[9].x>=k){
flag1=true;
}
if(flag1==false)
{
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
{
if(a[i].x>u)
{
sum++;
}
if(a[i].index==9)
break;
}
if(sum<=2)
flag2=true;
}
if(flag1||flag2)
{
cout<<"Yes"<<endl;
}
else
cout<<"No"<<endl;
}
J-牛牛战队的秀场
题目数据及要求:
解法:要学一下,对于圆内接正n变形,其边长为r*sin(360/n)*cos(180/n),需要顺时针逆时针走的步长都算取小的,这里很迷的就是,题目说的n,r都是整数我定义成int就不过,double就可以过。
代码:
#include<bits/stdc++.h>
#include<iomanip>
using namespace std;
const double pi=acos(-1.0);//表示弧度π
int main()
{ int n;
double l,sum1,sum2,r;//必须定义n,r为double,不然就错,服了
cin>>n>>r;
l=1.0*r*sin(1.0*(360/n)*pi/180)/cos(1.0*(180/n)*pi/180);
int i,j,k,z,q;
cin>>i>>j;
k=min(i,j);
z=max(i,j);
sum1=(z-k)*l;
q=z-k;
sum2=(n-q)*l;
sum1=min(sum1,sum2);
printf("%.6f\n",sum1);
}