将选手和询问按照年龄排序,即可去掉年龄的限制。

将所有选手按水平排序后维护线段树,显然最优解一定是从大到小贪心选择。

线段树上每个节点维护:

$g[0/1]:r+1$不选/选的时候,$l$选不选。

$c[0/1]:r+1$不选/选的时候,中间选了几个。

$s[0/1]:r+1$不选/选的时候,中间选的和。

然后查询的时候在线段树上二分即可。

时间复杂度$O((n+m)\log n)$。

#include<cstdio>
#include<algorithm>
#define N 300010
typedef long long ll;
int n,m,i,j,c[N],pos[N];ll ans[N];
struct P{int x,y,p;}a[N],b[N];
struct T{bool g[2];int c[2];ll s[2];}v[1050000];
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
inline bool cmp(const P&a,const P&b){return a.x<b.x;}
inline int lower(int x){
int l=1,r=n,mid,t;
while(l<=r)if(c[mid=(l+r)>>1]<=x)l=(t=mid)+1;else r=mid-1;
return t;
}
void build(int x,int a,int b){
if(a==b){pos[a]=x;return;}
int mid=(a+b)>>1;
build(x<<1,a,mid),build(x<<1|1,mid+1,b);
}
inline void change(int x,int y){
x=pos[x];
v[x].g[0]=v[x].c[0]=1,v[x].s[0]=y;
for(x>>=1;x;x>>=1)for(int i=0;i<2;i++){
bool j=v[x<<1|1].g[i];
v[x].g[i]=v[x<<1].g[j];
v[x].c[i]=v[x<<1|1].c[i]+v[x<<1].c[j];
v[x].s[i]=v[x<<1|1].s[i]+v[x<<1].s[j];
}
}
inline ll ask(int k){
int x=1,a=1,b=n,mid,o=0;ll ret=0;
while(k){
if(k>=v[x].c[o]){ret+=v[x].s[o];break;}
if(a==b)break;
mid=(a+b)>>1;
x=x<<1|1;
if(k<=v[x].c[o])a=mid+1;
else{
k-=v[x].c[o];
ret+=v[x].s[o];
o=v[x].g[o];
b=mid;
x--;
}
}
return ret;
}
int main(){
read(n);
for(i=1;i<=n;i++)read(a[i].x),read(a[i].y),c[i]=a[i].y;
read(m);
for(i=1;i<=m;i++)read(b[i].x),read(b[i].y),b[i].p=i;
std::sort(a+1,a+n+1,cmp);
std::sort(b+1,b+m+1,cmp);
std::sort(c+1,c+n+1);
build(1,1,n);
for(i=j=1;i<=m;i++){
while(j<=n&&a[j].x<=b[i].x)change(lower(a[j].y),a[j].y),j++;
ans[b[i].p]=ask(b[i].y);
}
for(i=1;i<=m;i++)printf("%lld\n",ans[i]);
return 0;
}

  

BZOJ3022 : [Balkan2012]The Best Teams的更多相关文章

  1. 【BZOJ】3022: [Balkan2012]The Best Teams

    原题链接 题面 (为啥这题没有题面-- 给出\(N\)个人,和年龄\(age_{i},skill_{i}\) 然后给出\(M\)个询问,就是年龄在\(a\)以下选不超过\(k\)个人 要求选择的人水平 ...

  2. BZOJ 3022 [Balkan2012]The Best Teams(扫描线+线段树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3022 [题目大意] 给定n个球员,第i个球员年龄为AGEi,水平为SKILLi. 没有 ...

  3. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  4. Rnadom Teams

    Rnadom  Teams 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.actioncid=88890#problem/B 题目: Descript ...

  5. URAL 1208 Legendary Teams Contest(DFS)

    Legendary Teams Contest Time limit: 1.0 secondMemory limit: 64 MB Nothing makes as old as years. A l ...

  6. timus 1106 Two Teams(二部图)

    Two Teams Time limit: 1.0 secondMemory limit: 64 MB The group of people consists of N members. Every ...

  7. CF478 B. Random Teams 组合数学 简单题

    n participants of the competition were split into m teams in some manner so that each team has at le ...

  8. UVA 11609 Teams 组合数学+快速幂

    In a galaxy far far away there is an ancient game played among the planets. The specialty of the gam ...

  9. SCAU 07校赛 10317 Fans of Footbal Teams

    10317 Fans of Footbal Teams 时间限制:1000MS  内存限制:65535K 题型: 编程题   语言: 无限制 Description Two famous footba ...

随机推荐

  1. python项目实战三个小实例

    1.   让用户输入圆的半径,告诉用户圆的面积: import math while True:     # 用户输入     r = input("请输入圆的半径:")     ...

  2. VS2017+mysql5.7 连接数据库生成实体

    参考:https://www.cnblogs.com/RushPasser/p/5438334.html 下载:https://share.weiyun.com/5rM4FrG mysql-for-v ...

  3. DNS解析中的A记录、AAAA记录、CNAME记录、MX记录、NS记录、TXT记录、SRV记录、URL转发等

    AA记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录 NSNS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录 SOASO ...

  4. 解决redis aof文件过大的问题

    执行BGREWRITEAOF命令对redis的AOF进行重写 redis-cli BGREWRITEAOF 相关解释: Redis的AOF机制有点类似于Mysql binlog,是Redis的提供的一 ...

  5. 详解 Java 中的三种代理模式

    代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用 ...

  6. BZOJ 3745

    题解: 分治好题 首先暴力显然rmq可以做到n^2 比较容易想到是以最值分治,这样在数据随机复杂度是nlogn,不随机还是n^2的 以最值分治只有做多与较小区间复杂度相同才是nlogn的 而这题里我们 ...

  7. flink--DateSet开发--简单入门

    开发流程 1. 获得一个execution environment, 2. 加载/创建初始数据, 3. 指定这些数据的转换, 4. 指定将计算结果放在哪里, 5. 触发程序执行 例子: object ...

  8. mysql基础理论

    第一节数据库管理系统概述 在www.db-engines.com/en/ 这个网站中可以看到对数据库的排名 数据库分为: 关系型数据库: mysql------mariaDB oracle 非关系型数 ...

  9. P1080 国王游戏 贪心 高精度

    题目描述 恰逢 HH国国庆,国王邀请nn 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 nn 位大臣排成一排,国王站在队伍的 ...

  10. 空间分析工具:GIS

    1.数据空间 数据空间是指用来表示空间实体的的位置.几何特征及其属性特征的数据. 位置:经纬度.地址.相对位置: 几何特征:点.线.面.形状: 属性特征:面积.周长.人口.经济等属性. POI数据.O ...