【计算几何基础】

【计算几何基础】

主要介绍一些高中数学的知识

卡精度

注意 \(\varepsilon\):
27b5e4a4a08a2b2d519bd7c223649de8
计算误差的产生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

题目大意

QQ_1777306712641

思路

枚举每个横轴,考虑中点
考虑中点纵坐标差值\(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

题目大意

QQ_1773397367314

思路

注意到两

posted @ 2026-03-13 18:23  White_ink  阅读(8)  评论(0)    收藏  举报