站军姿
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
const double pi=3.14159265358979323846264;
using namespace std;
void work()
{
int x1,y1,r1,x2,y2,r2;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&r1,&x2,&y2,&r2);
double d=sqrt(abs(x1-x2)*abs(x1-x2)+abs(y1-y2)*abs(y1-y2));
if(r1+r2<=d)//相离
{
double ans=r1*r1*pi+r2*r2*pi;
printf("%.3lf\n",ans);
return;
}
if(r1+r2>d&&abs(r1-r2)>=d)//内含
{
double ans=max(r2,r1)*max(r2,r1)*pi;
printf("%.3lf\n",ans);
return;
}
//相交
double ans=r1*r1*pi+r2*r2*pi;
double j1=acos((d*d+r1*r1-r2*r2)/(*d*r1));
double j2=acos((d*d+r2*r2-r1*r1)/(*d*r2));
ans-=(r1*r1*j1+r2*r2*j2);
ans+=d*r1*sin(j1);
printf("%.3lf\n",ans);
}
int main()
{
//freopen("jh.in","r",stdin);
freopen("standing.in","r",stdin);
freopen("standing.out","w",stdout);
int T;scanf("%d",&T);
while(T--)
{
work();
}
return ;
}
100分
对刚
3
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 100010
using namespace std;
int n,t,sum;
bool vis[maxn];
struct node{
int nxt,pre;
}q[maxn];
int main(){
//freopen("Cola.txt","r",stdin);
freopen("resist.in","r",stdin);
freopen("resist.out","w",stdout);
scanf("%d%d",&n,&t);
sum=n-;
for(int i=;i<=n;i++){
q[i].pre=i-;q[i].nxt=i+;
}
q[].pre=n;q[n].nxt=;
int pos=,cnt=;
while(sum){
cnt++;
if(cnt==t){
q[q[pos].pre].nxt=q[pos].nxt;
q[q[pos].nxt].pre=q[pos].pre;
vis[pos]=;
sum--;
cnt=;
}
pos=q[pos].nxt;
}
for(int i=;i<=n;i++){
if(!vis[i]){
printf("%d",i);
return ;
}
}
}
100分 链表模拟
隔壁
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define maxn 1010
int n,m,a[maxn],b[maxn],c[maxn];
long long map[maxn][maxn];
long long ans1,ans2;
bool v1[maxn];
int main(){
//freopen("Cola.txt","r",stdin);
freopen("neighbor.in","r",stdin);
freopen("neighbor.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&c[i]);
for(int i=;i<=m;i++)scanf("%d",&b[i]);
for(int i=,j=n;i<=n;i++,j--)a[i]=c[j];
int mark;
for(int i=;i<=n;i++){
bool flag=;
for(int j=;j<=m;j++){
if(b[j]==a[i]&&!v1[j]){
v1[j]=;
ans1+=a[i];
flag=;
break;
}
if(b[j]>a[i])mark=j;
}
if(!flag){
ans1+=a[i];
}
}
for(int i=;i<=m;i++){
if(!v1[i]){
ans1+=b[i];
}
}
cout<<ans1<<' ';
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(b[j]>=a[i])
map[i][j]=a[i];
}
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(b[j]<=a[i])
map[i][j]=b[j];
ans2+=map[i][j];
}
}
cout<<ans2;
return ;
}
100分 贪心