Gym - 100519 B Bring Your Own Bombs 离散化+二分+思维
题目链接: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 离散化+二分+思维相关推荐
- POJ2391 Floyd+离散化+二分+DINIC
题意: 有n个猪圈,每个猪圈里面都有一定数量的猪(可能大于当前猪圈的数量),每个猪圈都有自己的容量,猪圈与猪圈之间给出了距离,然后突然下雨了,问多久之后所有的猪都能进圈. 思路: ...
- POJ - 3179 Corral the Cows(离散化+二分+二维前缀和)
题目链接:点击查看 题目大意:在二维平面中给出n个点,每个位置都有一个一个三叶草,现在需要求出一个长方形区域,要求长方形边长最短,并且面积内部包含至少C个三叶草 题目分析:题目给出的n最大为500,但 ...
- C.Defuse the Bombs(简单二分)
C.Defuse the Bombs WA了九次,让我来看看简单二分有多简单 The terrorists have planted some bombs in a building! Our her ...
- POJ 3179Corral the Cows(离散化+二分)
题目链接: http://poj.org/problem?id=3179 题意: 有一个最大为10000的图,里面有一些特定的点叫三叶草,每个这样的点可包括往上.右.右上(也就是这是单位矩形的左下角) ...
- POJ3179 Corral the Cows 离散化 二分 前缀和
题目链接 http://poj.org/problem?id=3179 分析 容易想到二分和前缀和,难点在于坐标离散化,要将横纵坐标分别离散化. 对于三叶草的每个坐标,将其映射为次序: 没有三叶草的位 ...
- CodeForces - 1326E Bombs(线段树+思维)
题目链接:点击查看 题目大意:给出一个 n 的排列记为 p[ i ] ,现在有一个初始时为空的集合A,对于每个 i 遍历 1 ~ n ,每次的操作如下: 向集合中添加 p[ i ] 如果位置 i 有炸 ...
- 【2018icpc宁夏邀请赛现场赛】【Gym - 102222F】Moving On(Floyd变形,思维,离线处理)
https://nanti.jisuanke.com/t/41290 题干: Firdaws and Fatinah are living in a country with nn cities, n ...
- 2020CCPC绵阳站 D-Defuse the Bombs (二分答案)
题意:给定一个序列长度为n的序列a. 1.选择一个ai使得它的值加一 2.所有的ai都减一 3.如果此时有ai的值小于0,那么结束,否则的话返回第一步. 问你最多能执行多少次1步骤? 思路:由于最后3 ...
- 2020CCPC 绵阳 7-4 Defuse the Bombs(二分)
题意: 每个炸弹有个倒计时,每一轮你指定一个炸弹时间加一,然后每一个炸弹时间减一,如果有炸弹时间变成负数,那么就会爆炸. 求有炸弹爆炸的最长时间. 思路: 二分会进行midmidmid轮,那么每个炸弹 ...
最新文章
- WIN32获取当前进程模块句柄和HINSTANCE
- 如何处理postman Self-signed SSL certificate blocked错误
- 前端小知识点(9):函数和对象之间的关系
- 周末ROS学习沙龙第四期——动作编程、dynamic_reconfigure动态参数更新、控制机器人移动、传感器数据处理
- anaconda新建python文件_PyCharm+cmd中使用Anaconda 与 新建Python环境(Windows)
- poj1611(简答并查集)
- 信息学奥赛一本通(c++):1336:【例3-1】找树根和孩子
- coremail服务器无响应,icoremail邮箱系统 邮件收发常见问题|创思Chance
- jQuery插件以及插件下载
- @生存技巧!程序员如何应对女朋友的“小脾气”(最后附女友靓照)
- mysql错误码2002_MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket
- 【游戏开发】2D RPG游戏
- Wireshark网络分析实战笔记(二)显示过滤器
- 正六边形C语言输出算法记录
- 从史前到现在 三百八十年 计算机编年史(转)
- 命名规则之大驼峰命名法和小驼峰命名法
- c语言指针数组分配内存,指针数组数组指针的分配内存及函数参数 C语言版
- 淘宝客 WebView打开淘宝链接失败的解决方法
- 华为荣耀9青春版系统像鸿蒙,荣耀9青春版参数配置
- ubuntu14.04 刚安装完成后汉语拼音输入法出错问题的解决办法