B - Counterclockwise Rotation
c++中一些三角函数的应用,数学知识
#include<bits/stdc++.h>
using namespace std;
double x,y,a;
int main(){
cin>>x>>y>>a;
double L=sqrt(x*x+y*y),t=atan2(y,x)+a/180*acos(-1);
printf("%.10f %.10f\n",L*cos(t),L*sin(t));
return 0;
}
C - XX to XXX
模拟题
#include<bits/stdc++.h>
using namespace std;
string s,t;
int main(){
cin>>s>>t;
s=' '+s;
t=' '+t;
int n=s.size(),m=t.size();
int pos=1;
for(int i=1;i<=m;i++,pos++){
if(pos<=n&&s[pos]==t[i])continue;
pos--;
if(pos-1>=1&&s[pos-1]==t[i]&&s[pos]==t[i])
;
else{
cout<<"No";
return 0;
}
}
cout<<"Yes";
return 0;
}
D - Circumferences
几何 图论 并查集
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
ll x,y,r;
}a[3005];
int p[3005];
int find(int x){
if(p[x]==x)return x;
return p[x]=find(p[x]);
}
int main(){
int n,sx,sy,ex,ey;
cin>>n>>sx>>sy>>ex>>ey;
int k1,k2;
for(int i=1;i<=n;i++){
p[i]=i;
cin>>a[i].x>>a[i].y>>a[i].r;
if((a[i].x-sx)*(a[i].x-sx)+(a[i].y-sy)*(a[i].y-sy)==a[i].r*a[i].r)k1=i;
if((a[i].x-ex)*(a[i].x-ex)+(a[i].y-ey)*(a[i].y-ey)==a[i].r*a[i].r)k2=i;
for(int j=1;j<i;j++){
ll t1=(a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y);
ll t2=a[i].r*a[i].r+a[j].r*a[j].r+2*a[i].r*a[j].r;
ll t3=a[i].r*a[i].r+a[j].r*a[j].r-2*a[i].r*a[j].r;
if(t1<=t2&&t1>=t3){
p[find(i)]=find(j);
}
}
}
if(find(k1)==find(k2)){
cout<<"Yes\n";
}else cout<<"No\n";
return 0;
}