题意:一个N*M的矩形,每个点初始都是白色的,有Q次操作,每次操作将以(x,y)为圆心,r为半径的区域涂成黑点。求最后剩余白色点数。

分析:对每行,将Q次操作在该行的涂色视作一段区间,那么该行最后的白色点数即列数-区间覆盖的总长度。这就转化成了扫描线的问题。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn =1e4+;
struct Circle{
LL x,y,r;
}p[maxn];
struct Node{
LL l,r;
bool operator <(const Node & p ) const{
if(l==p.l) return r>p.r;
return l<p.l;
}
}; vector<Node> vz; int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int T;scanf("%d",&T);
while(T--){
LL N,M,Q;
scanf("%lld%lld%lld",&N,&M,&Q);
LL ans = N*M;
for(int i =;i<Q;++i) scanf("%lld%lld%lld",&p[i].x,&p[i].y,&p[i].r);
for(int i=;i<N;++i){
vz.clear();
for(int j=;j<Q;++j){
LL delx = abs(i-p[j].x);
if(delx>p[j].r) continue;
LL range = (LL)sqrt(p[j].r*p[j].r-delx*delx);
LL l = max((LL),p[j].y-range);
LL r = min(M-,p[j].y+range);
vz.push_back((Node){l,r});
}
sort(vz.begin(),vz.end());
int sz = vz.size();
LL r = -,tot = ;
for(int j=;j<sz;++j){
if(vz[j].r<=r) continue;
if(vz[j].l>r) r = vz[j].l;
else tot--;
tot += vz[j].r -r +;
r = vz[j].r;
}
ans -=tot;
}
printf("%lld\n",ans);
}
return ;
}

最新文章

  1. AR创意分享:儿童涂鸦遇上程序绘图
  2. 数据结构(c语言第2版)-----了解链表,栈,队列,串
  3. cxf webservice简单应用
  4. extern的用法
  5. 夺命雷公狗---微信开发59----在线点播电影网1之ckplayer播放器
  6. 通用的linux下安装配置svn独立服务
  7. 联合与枚举 、 高级指针 、 C语言标准库(一)
  8. ProgressBar 示例及自定义样式
  9. 【转】iOS类似Android上toast效果
  10. DML_数据操纵语言
  11. php用get_meta_tags轻松获取网页的meta信息
  12. css3 结构性伪类选择器
  13. Mac下显示隐藏的文件
  14. Continued Fractions CodeForces - 305B (java+高精 / 数学)
  15. AT91 USB Composite Driver Implementation
  16. [Python]网络爬虫(七):Python中的正则表达式教程(转)
  17. 2019.04.18 第六次训练 【2018-2019 ACM-ICPC, NEERC, Southern Subregional Contest, Qualification Stage】
  18. IOS Masonry自动布局
  19. MySQL 5.6的72个新特性(译)
  20. Linux命令应用大词典-第5章 显示文本和文件内容

热门文章

  1. [Tips] bzr Import error
  2. SQL2005 第一次配置没有服务器名称的问题
  3. &lt;!&gt;贴图/音乐
  4. 64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多?(一)
  5. 【问题】SUSE已经安装了libsodium,安装zeromq时出现下面的错误?
  6. javascript汇总(转)
  7. 【机器学习】WIFI室内定位
  8. util.inherits
  9. sql 存储过程,最简单的添加和修改
  10. 服务器证书日期无效 SSL_DATE_INVALID