bzoj4642: 泡泡
Description
Input
Output
用扫描线处理,由于圆互不包含/相切,扫描线上用平衡树维护线上圆的y坐标
当线上新增加一个圆时,检查y坐标在其上/下的圆是否与其相切
当线上删除一个圆时,检查y坐标在其上、下的两圆是否相切
以上两个判定可能重复,最后要去重
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<set>
typedef long double ld;
const ld _0=1e-,_s=std::sin(0.43415),_c=std::cos(0.43415);
int ans=;
struct cir{
ld x,y,r;
}cs[];
struct event{
ld x;
int id,type;
}es[];
std::pair<int,int>as[];
int ap=;
bool operator<(event a,event b){
return a.x<b.x;
}
struct cmp{bool operator()(int x,int y){return cs[x].y<cs[y].y;}};
std::set<int,cmp>line;
void chk(int a,int b){
ld x=cs[a].x-cs[b].x,y=cs[a].y-cs[b].y;
if(std::fabs(std::sqrt(x*x+y*y)-cs[a].r-cs[b].r)<_0){
if(a>b){int c=a;a=b;b=c;}
as[ap++]=std::make_pair(a,b);
}
}
int main(){
int n=_int();
for(int i=;i<n;i++){
int x,y,r;
scanf("%d%d%d",&x,&y,&r);
cs[i].x=_c*x+_s*y;
cs[i].y=-_s*x+_c*y;
cs[i].r=r;
es[i<<]=(event){cs[i].x-cs[i].r,i,};
es[i<<^]=(event){cs[i].x+cs[i].r,i,};
}
n<<=;
std::sort(es,es+n);
for(int i=;i<n;i++){
event w=es[i];
if(w.type){
std::set<int,cmp>::iterator it=line.upper_bound(w.id);
if(it!=line.end())chk(*it,w.id);
if(it!=line.begin())--it,chk(*it,w.id);
line.insert(w.id);
}else{
std::set<int,cmp>::iterator it=line.find(w.id);
if(it!=line.begin()){
int a=*--it;++it;++it;
if(it!=line.end())chk(*it,a);
--it;
}
line.erase(it);
}
}
std::sort(as,as+ap);
if(ap)ans=;
for(int i=;i<ap;i++)if(as[i]!=as[i-])++ans;
printf("%d\n",ans);
return ;
}
bzoj4642: 泡泡的更多相关文章
- 一个仿windows泡泡屏保的实现
一个仿windows泡泡屏保的实现 有天看到有人在百度知道上问windows 泡泡屏保该怎么用C#做,一时有趣,就做了一个出来,对于其中几个要点总结如下: 一,屏保程序的制作要求 屏保程序的扩展名是. ...
- BZOJ 1034 泡泡堂BNB 贪心+简单博弈
同样是今天做bzoj时做到的,感觉能力范围之内的就做了,也是蛮简单的 1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec Memory Limit: 162 MB Su ...
- 【BZOJ1034】[ZJOI2008]泡泡堂BNB 贪心
Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对阵 ...
- 气球或者泡泡向上飘动 jQuery插件
圣诞.元旦要来了,公司以往基本每个月至少要搞一两款手机小游戏来宣传产品,这次也不例外!! 之前做过,按压柚子.许愿.吃柚子等等小游戏,这次是做个那种 气球向上飘动,戳破气球,随机获取奖品.如下图: 手 ...
- BZOJ1034 [ZJOI2008]泡泡堂BNB
Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表 队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对 ...
- 【BZOJ】【1034】【ZJOI2008】泡泡堂BNB
贪心 类似田忌赛马策略的一个贪心= = 随便YY了一个做法居然A了…… 简单来说就是先强对强,弱对弱,能赢就赢,不能赢就让弱的那个去对强的那个,剩下的人继续依次捉对比赛(继续刚刚的策略),现在人数还是 ...
- 泡泡堂、QQ堂游戏通信架构分析
http://blog.csdn.net/sodme/article/details/468327#comments ————————————————————————————————————————— ...
- 1034: [ZJOI2008]泡泡堂BNB - BZOJ
Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对阵 ...
- ZJOI2008泡泡堂BNB
1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1305 Solved: 676[Submit][Sta ...
随机推荐
- Win下循环进入目录启动执行某任务
cd tldlq for /D %%s in (*) do ( cd %%s start "" LoginGate.exe start "" GameGate. ...
- ZOJ 1002 Fire Net
题目大意:有一个4*4的城市,其中一些格子有墙(X表示墙),在剩余的区域放置碉堡.子弹不能穿透墙壁.问最多可以放置几个碉堡,保证它们不会相互误伤. 解法:从左上的顶点开始遍历,如果这个点不是墙,做深度 ...
- 【转】Entity Framework技术导游系列开篇与热身
转自:http://blog.csdn.net/bitfan/article/details/12779517 Entity Framework走马观花 之 把握全局 ================ ...
- C专家编程学习 1
1.C语言的基本数据类型直接与底层硬件相对应. 2#define 是可能出现问题 1 2 3 4 5 #define a(y) a_ex(y) a(x)被扩展为 a_ex(x) #define a ...
- ubuntuPC机安装JLink驱动
摘要: 打开你仿真用的机器人的配置文化,这个应该是local_costmap_params.yaml transform tolerance g改为1 本文介绍了如何在Ubuntu平台配置J- ...
- js部分---类型,变量;
<script type="text/javascript">1.注释:用“//或者/**/”2.数据类型: (1)整型 int (2)小数类型 单精度float 双精 ...
- Linux-某电商网站流量劫持案例分析与思考
[前言] 自腾讯与京东建立了战略合作关系之后,笔者网上购物就首选京东了.某天在家里访问京东首页的时候突然吃惊地发现浏览器突然跳到了第三方网站再回到京东,心里第一个反应就是中木马了. 竟然有这样的事,一 ...
- C# TextBox 只能输入数字
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { TextBox txt = sender as TextBox ...
- linux free命令中buffer与cache的区别
linux free命令中buffer与cache的区别 2012-05-15 个评论 收藏 我要投稿 linux free命令中buffer与cache的区别 ~$ ...
- 018. ADO.NET _DataSet_DataAdapter
DataSet对象是支持ADO.NET的断开式或分布式数据方案的核心对象; DataAdapter对象是一种用来充当DataSet对象与实际数据源之间的桥梁 的对象, 所以二者结合访问数据库中数据模式 ...