Codeforces 842 B Gleb And Pizza

来源:互联网 发布:php 取小数点后两位 编辑:程序博客网 时间:2024/06/05 11:23

题目地址
题意:有一个披萨上面有很多火腿,因为披萨是有外面一圈壳的,问你有多少火腿完全在壳上面,其实题目下面给的图说的很清楚了。这里写图片描述
思路:计算出属于壳的半径范围,然后从火腿的圆心出发,到披萨的圆心的距离加上火腿的半径减去火腿的半径都在壳的半径范围以内就让一个变量加一就好了。最后输出变量。

#include <iostream>#include <cstring>#include <string>#include <queue>#include <vector>#include <map>#include <set>#include <stack>#include <cmath>#include <cstdio>#include <algorithm>#include <iomanip>#define N 40010#define M 800010#define LL __int64#define inf 0x3f3f3f3f#define lson l,mid,ans<<1#define rson mid+1,r,ans<<1|1#define getMid (l+r)>>1#define movel ans<<1#define mover ans<<1|1using namespace std;const LL mod = 1000000007;int main() {    cin.sync_with_stdio(false);    int R, d, r, x, y, n, ans;    double cnt;    while (cin >> R >> d) {        cin >> n;        ans = 0;        d = R - d;        for (int i = 0; i < n; i++) {            cin >> x >> y >> r;            cnt = sqrt(x*x + y*y) - r;            if (cnt >= d&&cnt + 2 * r <= R) {                ans++;            }        }        cout << ans << endl;    }    return 0;}
原创粉丝点击