bzoj:3616: War
Description
Input
Output
Sample Input
0 0 2 2 1
1 1 2 2 2
Sample Output
#include<cmath>
#include<bitset>
#include<cstdio>
#include<vector>
#include<algorithm>
#define ii inline int
#define MN 36000
#define MM 5000000
using namespace std; int n,m,f,ro=,num=,xx,X,o,la=,NO,l[MN+],k;
double MMH=;
char cs;
ii read(){
cs=getchar();xx=;f=;
while(cs<''||cs>'') {if (cs=='-') f=-;cs=getchar();}
while(cs>=''&&cs<='') xx=xx*+cs-,cs=getchar();
return xx*f;
}
struct tr{
int x,y,r,a;
friend bool operator<(tr a,tr b){if (X) return a.y<b.y;else return a.x<b.x;}
friend bool operator ==(tr a,tr b){return (a.x==b.x)&&(a.y==b.y);}
}a[MN+],aw;
struct tree{
int xa,xi,ya,yi,l,r;
}t[MN+];
struct na{
int y,ne;
}b[MM];
inline void in(int x,int y){
b[++num].y=y;b[num].ne=l[x];l[x]=num;
}
bitset<MN+> G[MN+];
vector <int> V[MN+];
ii S(int x){return x*x;}
ii A(int a,int b){return a>b?a:b;}
ii I(int a,int b){return a<b?a:b;}
ii B(int a){return a<?-a:a;}
ii build(int l,int r,int now){
X=now;
int mid=(l+r)>>;
nth_element(a+l,a+mid,a+r+);
t[mid].xa=t[mid].xi=a[mid].x;
t[mid].ya=t[mid].yi=a[mid].y;
t[mid].l=t[mid].r=;
if (l<mid) t[mid].l=build(l,mid-,now^),
t[mid].xa=A(t[t[mid].l].xa,t[mid].xa),
t[mid].xi=I(t[t[mid].l].xi,t[mid].xi),
t[mid].ya=A(t[t[mid].l].ya,t[mid].ya),
t[mid].yi=I(t[t[mid].l].yi,t[mid].yi);
if (mid<r) t[mid].r=build(mid+,r,now^),
t[mid].xa=A(t[t[mid].r].xa,t[mid].xa),
t[mid].xi=I(t[t[mid].r].xi,t[mid].xi),
t[mid].ya=A(t[t[mid].r].ya,t[mid].ya),
t[mid].yi=I(t[t[mid].r].yi,t[mid].yi);
return mid;
}
ii gnm(int j){return A(a[NO].x-t[j].xa,)+A(t[j].xi-a[NO].x,)+A(a[NO].y-t[j].ya,)+A(t[j].yi-a[NO].y,);}
ii gnq(int j){return S(A(a[NO].x-t[j].xa,)+A(t[j].xi-a[NO].x,))+S(A(a[NO].y-t[j].ya,)+A(t[j].yi-a[NO].y,));}
ii gmm(int j){return A(B(a[NO].x-t[j].xa),B(a[NO].x-t[j].xi))+A(B(a[NO].y-t[j].yi),B(a[NO].y-t[j].ya));}
ii gmq(int j){return S(A(B(a[NO].x-t[j].xa),B(a[NO].x-t[j].xi)))+S(A(B(a[NO].y-t[j].yi),B(a[NO].y-t[j].ya)));}
ii in(int x){
if (gmq(x)<=a[NO].r) return ;
if (gmm(x)<=a[NO].a) return ;
if (gnq(x)<=a[NO].r) return ;
if (gnm(x)<=a[NO].a) return ;
return ;
}
ii ju(int x){
if (S(a[x].x-a[NO].x)+S(a[x].y-a[NO].y)<=a[NO].r) return ;
if (B(a[x].x-a[NO].x)+B(a[x].y-a[NO].y)<=a[NO].a) return ;
return ;
}
ii que(int p){
int u=in(p);
if (u)
if (u==) G[p][NO]=;else{
if (ju(p)) in(p,NO);
if (t[p].l) que(t[p].l);
if (t[p].r) que(t[p].r);
}
}
inline void dw(int p){
if (t[p].l) G[t[p].l]|=G[p],dw(t[p].l);
if (t[p].r) G[t[p].r]|=G[p],dw(t[p].r);
for (register int i=l[p];i;i=b[i].ne) G[p][b[i].y]=;
}
int main(){
register int i,j;
n=read();m=read();k=read();
for (i=;i<=n;i++) a[i].x=read(),a[i].y=read(),a[i].r=S(read()),a[i].a=read(),V[read()].push_back(i);
ro=build(,n,);
for (NO=;NO<=n;NO++) que(ro);
dw(ro);
for (i=;i<=k;i++){
G[]=;
for (j=;j<V[i].size();j++) G[]|=G[V[i][j]];
for (j=;j<V[i].size();j++) G[][V[i][j]]=;
MMH+=pow(1.0-(1.0*G[].count()/n),m);
}
printf("%.6lf\n",MMH);
}
200724 kb 8588 ms C++/Edit 3446 B
bzoj:3616: War的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 洛谷 P1197 BZOJ 1015 [JSOI2008]星球大战 (ZOJ 3261 Connections in Galaxy War)
这两道题长得差不多,都有分裂集合的操作,都是先将所有操作离线,然后从最后一步开始倒着模拟,这样一来,分裂就变成合并,也就是从打击以后最终的零散状态,一步步合并,回到最开始所有星球都被连为一个整体的状态 ...
- 【BZOJ】【1863】【ZJOI2006】trouble 皇帝的烦恼
二分+DP Orz KuribohG 神题啊= = 满足单调性是比较显然的…… 然而蒟蒻并不会判断能否满足……QwQ 神一样的DP姿势:f[i]表示第 i 个与第1个最多有多少个相同,g[i]表示最少 ...
- 【BZOJ】【1011】【HNOI2008】遥远的行星
神奇的思路题QAQ 玛雅看到这题我就醉了,什么玩意……5%的误差?果断膜拜@ydc神犇的题解: 就是因为不清楚如何应用那个答案误差不超过5%啦. 从没见过这么诡异的题一下就懵了,问到了方法之后都还半信 ...
- 【BZOJ】【1640】【USACO2007 Nov】/【1692】【USACO2007 Dec】队列变换
后缀数组/贪心 每次从等待序列的头或尾拿出一个放到答案序列的末尾,那么每次贪心比较头和尾的字典序大小即可…… TAT贪心很好想,但是我一开始没想到是可以直接比较字符串大小……而是一位一位判的,WA了… ...
- 【BZOJ】【1067】 【SCOI2007】降雨量
思路题 玛雅,这分类讨论快讨论地疯了…… 从huzecong神的题解那里得到的灵感…… 首先考虑最好确定的情况:为true的时候,此时必须同时满足 1.x和y这两年的降雨量已知,且rain[x]< ...
- 【BZOJ】初级水题列表——献给那些想要进军BZOJ的OIers(自用,怕荒废了最后的六月考试月,刷刷水题,水水更健康)
BZOJ初级水题列表——献给那些想要进军BZOJ的OIers 代码长度解释一切! 注:以下代码描述均为C++ RunID User Problem Result Memory Time Code_Le ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- 用Maven部署war包到远程Tomcat服务器
过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们 ...
随机推荐
- 在IntelliJ IDEA里创建简单的基于Maven的SpringMVC项目
后来发现了一种更加方便的创建方式,即第一步不选择Create from archetype,创建完毕后打开Project Structure-Modules,然后添加Web,但是注意添加的Web里面的 ...
- 通过 JS 判断页面是否有滚动条的简单方法
前言 最近在写插件的过程中,需要使用 JS 判断是否有滚动条,搜了一下,大致方法都差不多,但都有些啰嗦,代码不够简洁.最终通过参考不同方法,写了一个比较简单的方法.在判断滚动条的同时也需要计算滚动条的 ...
- adb指令介绍
一.adb命令格式为:adb [-d|-e|-s <serialNumber>] <command> 1.adb devices :列出当前电脑所连接的所有安卓设备 2.adb ...
- http性能测试工具wrk源码学习之开篇
1.前言 最近工作需要测试nginx反向代理的性能,于是找了一些http测试工具,例如经典的Apache的ab.siege.wrk.wrk使用多线程事件驱动方式,支持lua脚本扩展.关于wrk介绍可以 ...
- python方法的延迟加载
数据挖掘的过程中,数据进行处理是一重要的环节,我们往往会将其封装成一个方法,而有的时候这一个方法可能会被反复调用,每一次都对数据进行处理这将是一个很耗时耗资源的操纵,那么有没有办法将计算后的结果缓存起 ...
- echarts异步数据加载(在下拉框选择事件中异步更新数据)
接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真心容易忘了.在接触echarts这期间也没有总结什么东西,今天我就来总结一下如何在echart中异步加载 ...
- 1.QT开发第一个程序
Ubuntu16.04安装QT5.8.0:http://www.cnblogs.com/dotnetcrazy/p/6725945.html QT5.8支持中文输入法(附带老版本的解决+不理想的情况解 ...
- Java自己动手写连接池二
读取数据库文件,来操作: package com.kama.cn; import java.sql.Connection;import java.sql.DriverManager;import ja ...
- Generation Axe 吉他之夜音乐会-广州站 感受
本人第一次看音乐会,演唱会跟音乐会是有区别的哈,演唱会以表演.舞蹈.歌唱为主,还有很多特别嘉宾 演出时间: 从20点开始一直到23点多才结束,有五个吉他手,开场跟结束五个吉他手一齐演出.平均每个人表演 ...
- 1.1 About Percona XtraDB Cluster
摘要: 出处:kelvin19840813 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎 ...