题目链接:https://vjudge.net/contest/370255#problem/B

我们考虑每一行每一列会爆炸的概率是多少  显然 对于会爆炸的每一行 位于该行的矩形的长都会爆炸  对于会爆炸的每一列 位于该列的矩形的宽都会爆炸  但是对于 行列都爆炸的但我 我们显然重复计算了 所以要容斥一下

#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1e5+10;
int x4[N],x2[N],x3[N];
int y4[N],y2[N],y3[N];
double px[N],py[N],dx[N],dy[N],fx[N],fy[N];
int cx[N],cy[N],ctx,cty;
int main(){int n,m;scanf("%d%d",&n,&m);for(int i = 1; i <= n; i++){scanf("%d%d%d%d",&x4[i],&y4[i],&x2[i],&y2[i]);}for(int i = 1; i <= m; i++){scanf("%d%d",&x3[i],&y3[i]);cx[++ctx]=x3[i],cy[++cty]=y3[i];scanf("%lf%lf",&fy[i],&fx[i]);dx[i]=dy[i]=1;}sort(cx+1,cx+1+ctx);sort(cy+1,cy+1+cty);ctx=unique(cx+1,cx+1+ctx)-cx-1;cty=unique(cy+1,cy+1+cty)-cy-1;for(int i = 1; i <= m; i++){//计算每行每列爆炸的概率int x = lower_bound(cx+1,cx+1+ctx,x3[i])-cx;dx[x]*=(100-fx[i])/100.00;int y = lower_bound(cy+1,cy+1+cty,y3[i])-cy;dy[y]*=(100-fy[i])/100.00;}
//对这些概率求前缀和for(int i = 1; i <= ctx; i++) dx[i]=1-dx[i],px[i]=px[i-1]+dx[i];for(int i = 1; i <= cty; i++) dy[i]=1-dy[i],py[i]=py[i-1]+dy[i];double ans = 0;for(int i = 1; i <= n; i++){int l1=lower_bound(cx+1,cx+1+ctx,x4[i])-cx;int r1=upper_bound(cx+1,cx+1+ctx,x2[i])-cx-1;int l2=lower_bound(cy+1,cy+1+cty,y4[i])-cy;int r2=upper_bound(cy+1,cy+1+cty,y2[i])-cy-1;double p1=px[r1]-px[l1-1],p2=py[r2]-py[l2-1];ans+=p1*(y2[i]-y4[i]+1)+p2*(x2[i]-x4[i]+1)-p1*p2;//p1*p2是容斥}printf("%.8f\n",ans);return 0;
} 

Gym - 100519 B Bring Your Own Bombs 离散化+二分+思维相关推荐

  1. POJ2391 Floyd+离散化+二分+DINIC

    题意:       有n个猪圈,每个猪圈里面都有一定数量的猪(可能大于当前猪圈的数量),每个猪圈都有自己的容量,猪圈与猪圈之间给出了距离,然后突然下雨了,问多久之后所有的猪都能进圈. 思路:     ...

  2. POJ - 3179 Corral the Cows(离散化+二分+二维前缀和)

    题目链接:点击查看 题目大意:在二维平面中给出n个点,每个位置都有一个一个三叶草,现在需要求出一个长方形区域,要求长方形边长最短,并且面积内部包含至少C个三叶草 题目分析:题目给出的n最大为500,但 ...

  3. C.Defuse the Bombs(简单二分)

    C.Defuse the Bombs WA了九次,让我来看看简单二分有多简单 The terrorists have planted some bombs in a building! Our her ...

  4. POJ 3179Corral the Cows(离散化+二分)

    题目链接: http://poj.org/problem?id=3179 题意: 有一个最大为10000的图,里面有一些特定的点叫三叶草,每个这样的点可包括往上.右.右上(也就是这是单位矩形的左下角) ...

  5. POJ3179 Corral the Cows 离散化 二分 前缀和

    题目链接 http://poj.org/problem?id=3179 分析 容易想到二分和前缀和,难点在于坐标离散化,要将横纵坐标分别离散化. 对于三叶草的每个坐标,将其映射为次序: 没有三叶草的位 ...

  6. CodeForces - 1326E Bombs(线段树+思维)

    题目链接:点击查看 题目大意:给出一个 n 的排列记为 p[ i ] ,现在有一个初始时为空的集合A,对于每个 i 遍历 1 ~ n ,每次的操作如下: 向集合中添加 p[ i ] 如果位置 i 有炸 ...

  7. 【2018icpc宁夏邀请赛现场赛】【Gym - 102222F】Moving On(Floyd变形,思维,离线处理)

    https://nanti.jisuanke.com/t/41290 题干: Firdaws and Fatinah are living in a country with nn cities, n ...

  8. 2020CCPC绵阳站 D-Defuse the Bombs (二分答案)

    题意:给定一个序列长度为n的序列a. 1.选择一个ai使得它的值加一 2.所有的ai都减一 3.如果此时有ai的值小于0,那么结束,否则的话返回第一步. 问你最多能执行多少次1步骤? 思路:由于最后3 ...

  9. 2020CCPC 绵阳 7-4 Defuse the Bombs(二分)

    题意: 每个炸弹有个倒计时,每一轮你指定一个炸弹时间加一,然后每一个炸弹时间减一,如果有炸弹时间变成负数,那么就会爆炸. 求有炸弹爆炸的最长时间. 思路: 二分会进行midmidmid轮,那么每个炸弹 ...

最新文章

  1. WIN32获取当前进程模块句柄和HINSTANCE
  2. 如何处理postman Self-signed SSL certificate blocked错误
  3. 前端小知识点(9):函数和对象之间的关系
  4. 周末ROS学习沙龙第四期——动作编程、dynamic_reconfigure动态参数更新、控制机器人移动、传感器数据处理
  5. anaconda新建python文件_PyCharm+cmd中使用Anaconda 与 新建Python环境(Windows)
  6. poj1611(简答并查集)
  7. 信息学奥赛一本通(c++):1336:【例3-1】找树根和孩子
  8. coremail服务器无响应,icoremail邮箱系统 邮件收发常见问题|创思Chance
  9. jQuery插件以及插件下载
  10. @生存技巧!程序员如何应对女朋友的“小脾气”(最后附女友靓照)
  11. mysql错误码2002_MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket
  12. 【游戏开发】2D RPG游戏
  13. Wireshark网络分析实战笔记(二)显示过滤器
  14. 正六边形C语言输出算法记录
  15. 从史前到现在 三百八十年 计算机编年史(转)
  16. 命名规则之大驼峰命名法和小驼峰命名法
  17. c语言指针数组分配内存,指针数组数组指针的分配内存及函数参数 C语言版
  18. 淘宝客 WebView打开淘宝链接失败的解决方法
  19. 华为荣耀9青春版系统像鸿蒙,荣耀9青春版参数配置
  20. ubuntu14.04 刚安装完成后汉语拼音输入法出错问题的解决办法

热门文章

  1. find、文件后缀及linux与Windows互传
  2. 【用过的抢票软件汇总】
  3. 旅行商问题(TSP)
  4. 【跨域】一篇文章彻底解决跨域设置cookie问题!
  5. 7个黑科技十足的微信小程序,每一个都能让你念念不舍!
  6. 微信“防拉黑”功能上线太实用了
  7. Glide v4详解
  8. 遥感图像的空间分辨率、光谱分辨率、时间分辨率的含义
  9. oracle中scott用户的创建
  10. 生物工程毕业的他,如何成为年薪超40w的Java程序员