题目链接:http://codeforces.com/contest/814/problem/D

题意:给出奇数个舞者,每个舞者都有中心坐标和行动半径,而且这些点组成的园要么相互包含要么没有交集求,讲这些点分成两部分最大面积是多少。

面积计算方法详见题目,很好理解有图示。

题解:这题挺简单的就考虑一下包含与不包含的就行了。具体看一下代码挺好理解的,主要是题目给出的这些点组成的园要么相互包含要么没有交集求导致

这题变得很简单

#include <iostream>
#include <cmath>
#include <cstring>
#include <vector>
#include <queue>
#define PI acos(-1)
using namespace std;
const int M = 1e3 + 10;
typedef long long ll;
vector<int>vc[M];//存该点包含的点
ll x[M] , y[M] , r[M];
ll PP(ll x) {return x * x;}
ll lowbi[M];//值为0表示该点没被包括,值不为零表示该点被其他点罩着
ll n;
ll lev[M];//下标的奇偶来判断是加还是减其实只要出现奇数次就可以加或者0的时候,由于一开始为0是不可能被包含的所以不用想加上就行。
void bfs() {
queue<int>q;
for(int i = 0 ; i < n ; i++) {
if(!lowbi[i]) q.push(i);
}
memset(lev , 0 , sizeof(lev));
while(!q.empty()) {
int v = q.front();
q.pop();
int len = vc[v].size();
for(int i = 0 ; i < len ; i++) {
int u = vc[v][i];
lev[u] = lev[v] + 1;
lowbi[u]--;
if(!lowbi[u]) q.push(u);
}
}
}
int main() {
cin >> n;
for(int i = 0 ; i < n ; i++) cin >> x[i] >> y[i] >> r[i];
for(int i = 0 ; i < n ; i++) {
for(int j = 0 ; j < n ; j++) {
if(i == j) continue;
if(r[i] > r[j] && r[i] * r[i] >= PP(x[i] - x[j]) + PP(y[i] - y[j])) {
vc[i].push_back(j);
lowbi[j]++;
}
}
}
ll ans = 0;
bfs();
for(int i = 0 ; i < n ; i++) {
if(lev[i] == 0 || lev[i] % 2) cout << i << endl , ans += r[i] * r[i];
else ans -= r[i] * r[i];
}
printf("%.12lf\n" , ans * PI);
return 0;
}

codeforces 814 D. An overnight dance in discotheque (贪心+bfs)的更多相关文章

  1. Codeforces Round #418 (Div. 2) D. An overnight dance in discotheque

    Codeforces Round #418 (Div. 2) D. An overnight dance in discotheque 题意: 给\(n(n <= 1000)\)个圆,圆与圆之间 ...

  2. An overnight dance in discotheque

    An overnight dance in discotheque time limit per test 2 seconds memory limit per test 256 megabytes ...

  3. CodeForces 814D An overnight dance in discotheque(贪心+dfs)

    The crowdedness of the discotheque would never stop our friends from having fun, but a bit more spac ...

  4. codeforces 814D An overnight dance in discotheque

    题目链接 正解:贪心. 首先我们可以计算出每个圆被多少个圆覆盖. 很显然,最外面的圆是肯定要加上的. 然后第二层的圆也是要加上的.那么第三层就不可能被加上了.同理,第四层的圆又一定会被加上. 然后我们 ...

  5. An overnight dance in discotheque CodeForces - 814D (几何)

    大意: 给定n个不相交的圆, 求将n个圆划分成两部分, 使得阴影部分面积最大. 贪心, 考虑每个连通块, 最外层大圆分成一部分, 剩余分成一部分一定最优. #include <iostream& ...

  6. CF#418 Div2 D. An overnight dance in discotheque

    一道树形dp裸体,自惭形秽没有想到 首先由于两两圆不能相交(可以相切)就决定了一个圆和外面一个圆的包含关系 又可以发现这样的树中,奇数深度的圆+S,偶数深度的圆-S 就可以用树形dp 我又写挫了= = ...

  7. codeforces 814 C. An impassioned circulation of affection 【尺取法 or DP】

    //yy:因为这题多组数据,DP预处理存储状态比每次尺取快多了,但是我更喜欢这个尺取的思想. 题目链接:codeforces 814 C. An impassioned circulation of ...

  8. Codeforces 669D Little Artem and Dance (胡搞 + 脑洞)

    题目链接: Codeforces 669D Little Artem and Dance 题目描述: 给一个从1到n的连续序列,有两种操作: 1:序列整体向后移动x个位置, 2:序列中相邻的奇偶位置互 ...

  9. codeforces 814 C. An impassioned circulation of affection(二分+思维)

    题目链接:http://codeforces.com/contest/814/problem/C 题意:给出一串字符串然后q个询问,问替换掉将m个字符替换为字符c,能得到的最长的连续的字符c是多长 题 ...

随机推荐

  1. 电信光猫带路由器(F452)的虚拟服务器端口映射

    现在电信宽带的光猫一般都自带路由器功能,为了方便运营商管理网络用户,电信公司插入了企业局域网,网络用户的光猫路由器都是这个局域网的节点.用户家里的电脑在网络中的结构位置一般如下所示: 互联网(公网)= ...

  2. Linux进程间通信——信号

    一.认识信号 信号(Signals)是Unix.类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式.它是一种异步的通知机制,用来提醒进程一个事件已经发生.当一个信号发送给一个进程 ...

  3. 基于 Autojs 的 APP、小程序自动化测试 SDK - 2019年8月3日

    原文:https://blog.csdn.net/laobingm/article/details/98317394 autojs sdk基于 Autojs 的 APP.小程序自动化测试 SDK,支持 ...

  4. jenkins未授权访问漏洞

    jenkins未授权访问漏洞 一.漏洞描述 未授权访问管理控制台,可以通过脚本命令行执行系统命令.通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹shell,wget写webshe ...

  5. Unity的弱联网Json数据传输

    注意事项: 关于dictionary转json的工程中遇到一点问题:要手动添加双引号. 关于json转dictionary:同样需要手动去掉双引号,否则添加到dictionary中的字符串会带有双引号 ...

  6. n的阶乘 -牛客

    题目描述 输入一个整数n,输出n的阶乘(每组测试用例可能包含多组数据,请注意处理) 输入描述: 一个整数n(1<=n<=20) 输出描述: n的阶乘 解题思路 采用递归求解,也可以使用循环 ...

  7. 基于RobotFramework实现自动化测试

    Java + robotframework + seleniumlibrary 使用Robot Framework Maven Plugin(http://robotframework.org/Mav ...

  8. pdf.js跨域加载文件

    pdf.js一个基于Html的工具类,熟悉pdf.js的朋友们很清楚,pdf.js帮助我们做了很多事.尤其金融类网站会产生很多的报表.需要在线预览.pdf.js绝对是我们的首选 本地预览 在pdf.j ...

  9. java web 加载Spring --web.xml 篇

    spring是目前最流行的框架.今天谈谈对spring的认识 起步 javaweb中我们首先会遇到的配置文件就是web.xml,这是javaweb为我们封装的逻辑,不在今天的研究中.略过,下面是一个标 ...

  10. RecyclerView实现混合布局

    PS:好长时间不写博客了,起初是不知道写些什么,后来接触了到了很多东西,原本看似简单的东西,背后都隐藏着巨大的秘密,想handler的使用,一般情况下会引起内存泄漏问题,想着找到方法结局不就得了吗,可 ...