URAL 1333
2016-08-06 15:29
204 查看
这题真是无语了。
想法的确挺好的,因为1%的精度可以了,同时,N<=10,可以视为1000*1000
但是这个吃精度的事情真是无语
1.一开始我打算把所有的数据都乘以1000,结果数据出现了惊人的误差
2。同时,如果我用dcmp函数将double 类型变成int类型比较大小的时候,出现了蜜汁bug。
看来像这种只是经过了+-*的double 野生类型,直接用就可以了。。。
amazing#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
using namespace std;
const double eps=1e-10;
int dcmp(double x)
{
if(x>eps)return 1;
if(x<-eps)return -1;
return 0;
}
struct Circle
{
double x,y,r;
Circle(){}
Circle(double x0,double y0,double r0):x(x0),y(y0),r(r0){}
bool inc(double X,double Y)
{
double ans=(X-x)*(X-x)+(Y-y)*(Y-y);
return ans<=r*r;
}
}c[13];
int n,cnt;
int main()
{
while(~scanf("%d",&n)){
cnt=0;
for(int i=0;i<n;i++){
double x,y,r;
scanf("%lf%lf%lf",&x,&y,&r);
c[i]=Circle(x,y,r);
}
for(double i=0;i<=1;i+=0.001){
for(double j=0;j<=1;j+=0.001){
for(int k=0;k<n;k++){
if(c[k].inc(i,j)){
cnt++;break;
}
}
}
}
printf("%lf\n",(double)cnt/10000);
}
return 0;
}
想法的确挺好的,因为1%的精度可以了,同时,N<=10,可以视为1000*1000
但是这个吃精度的事情真是无语
1.一开始我打算把所有的数据都乘以1000,结果数据出现了惊人的误差
2。同时,如果我用dcmp函数将double 类型变成int类型比较大小的时候,出现了蜜汁bug。
看来像这种只是经过了+-*的double 野生类型,直接用就可以了。。。
amazing#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
using namespace std;
const double eps=1e-10;
int dcmp(double x)
{
if(x>eps)return 1;
if(x<-eps)return -1;
return 0;
}
struct Circle
{
double x,y,r;
Circle(){}
Circle(double x0,double y0,double r0):x(x0),y(y0),r(r0){}
bool inc(double X,double Y)
{
double ans=(X-x)*(X-x)+(Y-y)*(Y-y);
return ans<=r*r;
}
}c[13];
int n,cnt;
int main()
{
while(~scanf("%d",&n)){
cnt=0;
for(int i=0;i<n;i++){
double x,y,r;
scanf("%lf%lf%lf",&x,&y,&r);
c[i]=Circle(x,y,r);
}
for(double i=0;i<=1;i+=0.001){
for(double j=0;j<=1;j+=0.001){
for(int k=0;k<n;k++){
if(c[k].inc(i,j)){
cnt++;break;
}
}
}
}
printf("%lf\n",(double)cnt/10000);
}
return 0;
}
相关文章推荐
- ural 1333 化平面为点计算覆盖率
- 【解题报告】 URAL 1333 Genie Bomber 2 -- 利用类似统计的方法计算覆盖效率
- ural 1333 Genie Bomber 2
- URAL 1333 Genie Bomber 2(正方形被圆覆盖的面积)
- URAL 1796. Amusement Park (math)
- ural 2071. Juice Cocktails
- 【Ural1073】 Square Country——完全背包
- Ural 1671 Anansi's Cobweb
- URAL 2060 Subpalindrome Pairs Manacher
- URAL 1627 (生成树计数)
- Ural 1036 Lucky Tickets
- URAL 1279 Palindrome
- URAL 1091 Tmutarakan Exams(容斥原理)
- URAL 1970 皇后像廣場 暴力搜索
- URAL 1132 Square Root <二次剩余 + 数论>
- URAL 2040 Palindromes and Super Abilities 2 (回文自动机)
- SYSU-10,URAL 1675,容斥原理
- URAL 2065 Different Sums (找规律)
- ural 2073 - Log Files 模拟
- 文章标题 csu1333 :Funny Car Racing(最短路 spfa)