【计算几何基础】
【计算几何基础】
主要介绍一些高中数学的知识
卡精度
注意 \(\varepsilon\):

计算误差的产生:0.1这个不能完全被表示的数
常见爆精度情况
- 加减太多次:先加一些大数最后再减掉
- 加减法的误差会被乘除法放大
- \(\sqrt{x}\),\(acos(x)\)等函数超过定义域
注意点
(1)能平方就平方,能不开根就不开根(开根误差很大)
(2)使用\(acos\)记得clip到\([-1,1]\)
(3)尽量减少浮点数的运算次数
题目积累
[ICPC 2024 Xi'an I] Triangle
https://www.luogu.com.cn/problem/P10562
题目大意

思路
枚举每个横轴,考虑中点。
考虑中点纵坐标差值\(y=\frac{b}{a} \times x\) 注意这里不要用直线方程算,会多一次加
若中点$y-\lfloor y \rfloor \geq 0.5 $ 则算该点,否则不算该点
代码
i64 a,b;
void solve(){
cin>>a>>b;
i64 ans=0;
for(double i=0.5;i<=a;i+=1.0){//注意这里直接枚举double的i,不要再-0.5
double p=i*b/a;
ans+=(i64)p;
if((p-(i64)p)>=0.5) ans++;
}
cout<<ans<<endl;
}
Keeping the Dogs Apart(NCPC2016K)
https://codeforces.com/gym/101550
题目大意

思路
注意到两

浙公网安备 33010602011771号