2018ACM上海大都会赛 F Color it【基础的扫描线】
题目:戳这里
题意:有n*m个点全为白色,q个圆,将q个圆内所有的点都染成黑色,问最后剩下多少白色的点。
解题思路:每一行当做一个扫描线,扫描所有的圆,记录每一行在圆中的点即可,O(n*q)。
附ac代码:
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <algorithm>
5 #include <string>
6 #include <cmath>
7 using namespace std;
8 const int maxn = 2e5 + 10;
9 struct nod
10 {
11 int x;
12 int y;
13 int r;
14 nod(){}
15 bool operator < (const nod & b) const
16 {
17 if(x == b.x) return y < b.y;
18 return x < b.x;
19 }
20 }nu[maxn],a[maxn];
21 int main()
22 {
23 int t;
24 int n, m, q;
25 scanf("%d", &t);
26 while(t--)
27 {
28 int ans = 0;
29 scanf("%d %d %d", &n, &m, &q);
30 for(int i = 1; i <= q; ++i)
31 {
32 scanf("%d %d %d", &a[i].x, &a[i].y, &a[i].r);
33 }
34 int len = 0;
35 for(int i = 0; i < n; ++i)
36 {
37 len = 0;
38 for(int j = 1; j <= q; ++j)
39 {
40 int u = a[j].r * a[j].r - (a[j].x - i) * (a[j].x - i);
41 if(u < 0) continue;
42 u = sqrt(u);
43 //printf("%d u\n", u);
44 nu[++len].x = max(a[j].y - u, 0);
45 nu[len].y = min(a[j].y + u, m - 1);
46 //printf("%d len %d %d\n", len, nu[len].x, nu[len].y);
47 }
48 if(len == 0) continue;
49 sort(nu + 1, nu + 1 + len);
50 int lt = nu[1].x, rt = nu[1].y;
51 for(int j = 2; j <= len; ++j)
52 {
53 if(nu[j].y < 0) continue;
54 if(nu[j].x >= m) break;
55 if(rt >= nu[j].x)
56 {
57 rt = max(rt,nu[j].y);
58 }
59 else
60 {
61 ans += rt - lt + 1;
62 //printf("%d i %d %d lt %d rt\n", i, ans, lt, rt);
63 lt = nu[j].x;
64 rt = nu[j].y;
65 }
66 }
67 ans += rt - lt + 1;
68 //printf("%d i %d %d lt %d rt\n", i, ans, lt, rt);
69 }
70 printf("%d\n", n * m - ans);
71 }
72 return 0;
73 }
2018ACM上海大都会赛 F Color it【基础的扫描线】的更多相关文章
- 【数位dp】Beautiful Numbers @2018acm上海大都会赛J
目录 Beautiful Numbers PROBLEM 题目描述 输入描述: 输出描述: 输入 输出 MEANING SOLUTION CODE Beautiful Numbers PROBLEM ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it
链接:https://www.nowcoder.com/acm/contest/163/F 来源:牛客网 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it 时间限制:C ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it (扫描线)
2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it (扫描线) 链接:https://ac.nowcoder.com/acm/contest/163/F来源:牛客网 时间 ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛
传送门:2018 ACM 国际大学生程序设计竞赛上海大都会赛 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛2018-08-05 12:00:00 至 2018-08-05 17:00:0 ...
- 2018 ACMICPC上海大都会赛重现赛 H - A Simple Problem with Integers (线段树,循环节)
2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 H - A Simple Problem with Integers (线段树,循环节) 链接:https://ac.nowcoder.co ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP)
2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP) 链接:https://ac.nowcoder.com/acm/contest/163/ ...
- 2018 ICPC上海大都会赛重现赛 D Thinking-Bear magic (几何)
2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 D Thinking-Bear magic (几何) 链接:https://ac.nowcoder.com/acm/contest/163/ ...
- 牛客 Fruit Ninja 2018 ACM 上海大都会赛 (随机化算法)
题目链接:Fruit Ninja 比赛链接:2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 题目描述 Fruit Ninja is a juicy action game enjoyed ...
- [2019上海网络赛F题]Rhyme scheme
题目链接 题意,求出合法的长度为n的字典序第k小字符串,合法的定义为除了最后一位,每一位的取值范围为'A'到'A'+pos-1,而最后一位的取值范围'A'到当前字符串最大值+1. 队友tql,Orz ...
随机推荐
- 简易双色球dome分享
代码如下: <style type="text/css"> div {font-weight: bold;text-align: center;} .tone{widt ...
- Linux的环境变量配置在/etc/profile或/etc/profile.d/*.sh文件中的区别是什么?
@ 目录 login shell non-login shell 它们的区别 Linux的环境变量可在多个文件中配置,如/etc/profile,/etc/profile.d/*.sh,~/.bash ...
- Android 8.0/9.0 wifi 自动连接评分机制
前言 Android N wifi auto connect流程分析 Android N selectQualifiedNetwork分析 Wifi自动连接时的评分机制 今天了解了一下Wifi自动连接 ...
- 使用Bat自动打包并通过FTP发送到备份服务器——实战测试
这个bat文件要求本地安装有winrar解压软件,位置是:C:\Program Files\WinRAR\WinRAR.exe 如果执行报错,请检查你复制我的代码是否有问题,有些复制粘贴进去后因为一些 ...
- TCP连接的超时时间
无论你用任何语言或者是网络库,你都可以设置网络操作的超时时间,特别是connect.read.write的超时时间. 你可以在代码中把超时时间设置任意大小值,但是connect方法会有一点特殊. co ...
- 慕课网金职位 Python工程师 百度网盘下载
百度网盘链接:https://pan.baidu.com/s/1xshLRO3ru0LAsQQ0pE67Qg 提取码:bh9f 如果失效加我微信:610060008[视频不加密,资料代码齐全,超清一手 ...
- 成功解决Git:fatal: refusing to merge unrelated histories
Get 报错 如果合并了两个不同的开始提交的仓库,在新的 git 会发现这两个仓库可能不是同一个,为了防止开发者上传错误,于是就给下面的提示 fatal: refusing to merge unre ...
- (二)SpringBoot应用运维脚本
SpringBoot应用运维脚本 一.获取PID 二.Kill命令 三.nohup命令 四.编写SpringBoot应用运维脚本 4.1全局变量 4.2编写核心方法 4.3Info方法 4.4stat ...
- JavaScript——DOM操作
DOM-(Document Object Model)即文档对象模型. JavaScript可以动态地修改DOM,从而来修改HTML的内容. 查找HTML元素 通过 id 找到 HTML 元素 通过标 ...
- 【Oracle】SQL/92 执行多个表的连接
内连接 外连接 自连接 交叉连接 1.内连接 表名 INNER JOIN 表名 ON 条件 等价于: FROM 表名, 表名 WHERE 条件 SELECT p.name, pt.name, pt.p ...