本来以为扫描线,学习一下怎么求有重叠的扇型面积
结果这题可以直接拆成360个1度的扇形。
#include<bits/stdc++.h>
#define ll long long int
using namespace std;
const int maxn=365;
const double Pi=acos(-1);
int maxr[maxn];
int main(){
int t;
cin>>t;
while(t--){
memset(maxr,0,sizeof(maxr));
int n,r,a,b;
cin>>n;
for(int i=0;i<n;i++){
cin>>r>>a>>b;
a+=90,b+=90;
for(int j=a;j<b;j++){
maxr[j]=max(maxr[j],r);
}
}
double ans=0;
for(int i=0;i<360;i++){
ans+=Pi*maxr[i]*maxr[i]/360.0;
}
cout<<fixed<<setprecision(3)<<ans<<endl;
}
return 0;
}