**A - Birthday Cake —— 直线分割 **
思路:
通过枚举法,找到合适的解。
题解
#include<bits/stdc++.h>
using namespace std;
#define N 205
struct Piont{
int x,y;
}a[N];
int n,sum1,sum2;
int main(){
while(~scanf("%d",&n)&&n){
for(int i=1;i<=2*n;i++)
cin >> a[i].x >> a[i].y;
sum1 = sum2 = 0;
for(int i=0;i<=500;i++){
int aa = 0;
for(int j=-500;j<=500;j++){
int bb = 0;
for(int k=1;k<=2*n;k++){
if(j*a[k].x+i*a[k].y==0){
bb = 1;
break;
}
else if(j*a[k].x+i*a[k].y>0)sum1++;
else sum2++;
}
if(bb!=1&&sum1==n){
cout << j << " " << i << endl;
aa = 1;
break;
}
else{
sum1 = 0;
sum2 = 0;
}
}
if(aa)break;
}
}
}
B - Is This Integration ? —— 计算几何
其中,acos()是反余弦函数,而acos(-1)返回的是π值。
主要在于推出x,y,z的表达式。
题解
#include<bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
int main(){
double a;
while(cin >> a){
double z = a*a - pi*a*a/6.0 - sqrt(3)*a*a/4.0;
double y = (1-pi/4.0)*a*a - 2*z;
double x = a*a -4*z - 4*y;
printf("%.3f %.3f %.3f\n",x,4*y,4*z);
}
return 0;
}