[TS-A1487][2013中国国家集训队第二次作业]分配游戏[二分]
根据题意,设$3n$次比较中胜了$w$次,负了$l$次,平了$d$次,所有场次中胜了$W$次,负了$L$次,平了$D$次。如果一场赢了,那么$w-l$就会$+1$,相同地,$W-L$也会$+1$;如果输了一场$w-l$就会$-1$,$W-L$也会$-1$。另外,再一局中如果有一次比较平了,那么这一场就一定是平局。所以对于每次查询,二分统计分别共计胜负平的比较次数,则可知$W-L=w-l$,所以$\frac{((W+L+D)+(W-l)-D)}{2}即为答案,最后就是$D$的计算方法。$D$的大小在没有三次比较完全一样的时候等于$d$,所以只需要减去三次都一样的 次数$*2$ 即可。
#include <bits/stdc++.h> using namespace std; int n,m,N,cnt;
int a[],b[],c[]; pair<pair<int,int>,int>vec[]; int getint()
{
int data=;
char ch=getchar();
while(ch<'' || ch>'')ch=getchar();
while(ch>='' && ch<='')data=data*+ch-,ch=getchar();
return data;
} template<class _tp>
_tp* lower_bound(_tp*l,_tp*r,const _tp val)
{
_tp*mid;
while(l!=r)
{
mid=l+((r-l)>>);
if(*mid<val)l=mid+;
else r=mid;
}
return r;
} template<class _tp>
_tp* upper_bound(_tp*l,_tp*r,const _tp val)
{
_tp*mid;
while(l!=r)
{
mid=l+((r-l)>>);
if(*mid<=val)l=mid+;
else r=mid;
}
return r;
} int main()
{
int i,*temp1,*temp2; pair<pair<int,int>,int>t;
N=getint(),n=getint(),m=getint(); for(i=;i<=n;++i)
{
a[i]=getint(),b[i]=getint(),c[i]=getint();
vec[++cnt]=make_pair(make_pair(a[i],b[i]),c[i]);
} sort(a+,a+n+);
sort(b+,b+n+);
sort(c+,c+n+);
sort(vec+,vec+n+); for(i=;i<=m;++i)
{
int x,y,z,W,D,L; x=getint(),y=getint(),z=getint();
W=,L=,D=; W+=(temp1=lower_bound(a+,a+n+,x))-a-;
L+=(a+n+)-(temp2=upper_bound(a+,a+n+,x));
D+=temp2-temp1;
W+=(temp1=lower_bound(b+,b+n+,y))-b-;
L+=(b+n+)-(temp2=upper_bound(b+,b+n+,y));
D+=temp2-temp1;
W+=(temp1=lower_bound(c+,c+n+,z))-c-;
L+=(c+n+)-(temp2=upper_bound(c+,c+n+,z));
D+=temp2-temp1;
t=make_pair(make_pair(x,y),z);
D-=(upper_bound(vec+,vec+n+,t)-lower_bound(vec+,vec+n+,t))<<; printf("%d\n",(n+(W-L)-D)>>);
} return ;
}
[TS-A1487][2013中国国家集训队第二次作业]分配游戏[二分]的更多相关文章
- [tsA1491][2013中国国家集训队第二次作业]家族[并查集]
m方枚举,并查集O(1)维护,傻逼题,,被自己吓死搞成神题了... #include <bits/stdc++.h> using namespace std; struct tri { i ...
- [tsA1490][2013中国国家集训队第二次作业]osu![概率dp+线段树+矩阵乘法]
这样的题解只能舔题解了,,,qaq 清橙资料里有.. #include <iostream> #include <cstdio> #include <cstdlib> ...
- [TS-A1489][2013中国国家集训队第二次作业]抽奖[概率dp]
概率dp第一题,开始根本没搞懂,后来看了09年汤可因论文才基本搞懂,关键就是递推的时候做差比较一下,考虑新加入的情况对期望值的贡献,然后推推公式(好像还是不太会推qaq...) #include &l ...
- [TS-A1488][2013中国国家集训队第二次作业]魔法波[高斯消元]
暴力直接解异或方程组,O(n^6)无法接受,那么我们考虑把格子分块,横着和竖着分别分为互不影响的块,这样因为障碍物最多不超过200个,那么块的个数最多为2*(800+200)=2000个,最后用bit ...
- [TS-A1486][2013中国国家集训队第二次作业]树[树的重心,点分治]
首先考虑暴力,可以枚举每两个点求lca进行计算,复杂度O(n^3logn),再考虑如果枚举每个点作为lca去枚举这个点的子树中的点复杂度会大幅下降,如果我们将每个点递归考虑,每次计算过这个点就把这个点 ...
- [TS-A1505] [清橙2013中国国家集训队第二次作业] 树 [可持久化线段树,求树上路径第k大]
按Dfs序逐个插入点,建立可持久化线段树,每次查询即可,具体详见代码. 不知道为什么,代码慢的要死,, #include <iostream> #include <algorithm ...
- < < < 2013年国家集训队作业 > > >
完成题数/总题数: 道/37道 1. A1504. Book(王迪): 数论+贪心 ★★☆ 2013中国国家集训队第二次作业 2. A1505. 树(张闻涛): 倍增LCA+可 ...
- [转] ACM中国国家集训队论文集目录(1999-2009)
国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98试题PICTURE谈起>来煜坤:<把握本质,灵活运用——动态规划的深入探讨>齐鑫:<搜索方法中的 ...
- P2619 [国家集训队2]Tree I(最小生成树+二分)
P2619 [国家集训队2]Tree I 每次二分一个$x$,每条白边加上$x$,跑最小生成树 统计一下满足条件的最小值就好了. to me:注意二分不要写挂 #include<iostream ...
随机推荐
- 9.9 NOIP模拟题
9.9 NOIP模拟题 T1 两个圆的面积求并 /* 计算圆的面积并 多个圆要用辛普森积分解决 这里只有两个,模拟计算就好 两圆相交时,面积并等于中间两个扇形面积减去两个三角形面积 余弦定理求角度,算 ...
- 洛谷P1250种树(贪心)
题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1..N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定了三个号码B,E, ...
- OpenResty / Nginx模块,Lua库和相关资源的列表
OpenResty / Nginx模块,Lua库和相关资源的列表 什么是OpenResty OpenResty是一个成熟的网络平台,它集成了标准的Nginx核心,LuaJIT,许多精心编写的Lua库, ...
- 【知识总结】多项式全家桶(二)(ln和exp)
上一篇:[知识总结]多项式全家桶(一)(NTT.加减乘除和求逆) 一.对数函数\(\ln(A)\) 求一个多项式\(B(x)\),满足\(B(x)=\ln(A(x))\). 这里需要一些最基本的微积分 ...
- XML解析-Dom4j的DOM解析方式更新XML
Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文 ...
- Andorid Scrolling Activity(CoordinatorLayout详情)
1.new project -> Scrolling Activity 2.Layout xml code activity_scrolling.xml <?xml version=&qu ...
- CSS——行业动态demo
1.padding的运用:子div继承父div的宽,子div的padding-left值是不会撑大的. 2.背景图片的运用:不平铺.定位 3.ul本身就是一个盒子,它的高度是li中的字体的默认高度撑起 ...
- easyui 使用笔记
http://www.easyui.info/archives/1435.html datagrid 服务端分页 服务端分页,高效,快捷!强力推荐! easyui的datagrid服务端分页,通过设置 ...
- vim之tags
好长时间没有上来更新了, 今天趁老板不再上来休闲一下. 本章要说的是和vim的tags相关的内容. 之所以在跳转之后就说明tags是因为这个功能相当的重要和实用. 好的东西自然是需要提前分享的. 首先 ...
- ECharts实例开发学习笔记二——时间轴
记录一下ECharts时间轴的使用,首先是照着官方的示例做一遍,在这里不要忘了引入timelineOption.js,后面介绍如何动态创建时间轴的记录数,即根据需求可伸缩显示有多少天或者年月等轴标记数 ...