这题想了很久没思路,不知道怎么不sort维护二维的最小值

emmmm原来是线段树/树状数组,一维sort,二维当成下标,维护三维的最小值

#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; void debug(){cout<<"fuck"<<endl;} struct pe{
int a,b,c;
}s[N];
int sum[N];
void update(int i,int x)
{
while(i<N)
{
sum[i]=min(sum[i],x);
i+=i&(-i);
}
}
int query(int i)
{
int ans=inf;
while(i>)
{
ans=min(ans,sum[i]);
i-=i&(-i);
}
return ans;
}
bool comp(pe x,pe y)
{
return x.a<y.a;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=;i<=n;i++)
cin>>s[i].a>>s[i].b>>s[i].c;
sort(s+,s+n+,comp);
memset(sum,inf,sizeof sum);
int ans=;
for(int i=;i<=n;i++)
{
if(query(s[i].b)<s[i].c)ans++;
update(s[i].b,s[i].c);
}
cout<<n-ans<<endl;
}
return ;
}
/******************** ********************/

BIT

#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; void debug(){cout<<"fuck"<<endl;} struct pe{
int a,b,c;
}s[N];
int value[N<<],res;
void pushup(int rt)
{
value[rt]=min(value[rt<<],value[rt<<|]);
}
void btree(int l,int r,int rt)
{
value[rt]=inf;
if(l==r)return ;
int m=(l+r)/;
btree(ls);
btree(rs);
}
void update(int l,int r,int rt,int x,int c)
{
if(l==r)
{
value[rt]=min(value[rt],c);
return ;
}
int m=(l+r)/;
if(x<=m)update(ls,x,c);
else update(rs,x,c);
pushup(rt);
}
void query(int l,int r,int rt,int L,int R)
{
if(L<=l&&r<=R)
{
res=min(res,value[rt]);
return ;
}
int m=(l+r)/;
if(L<=m)query(ls,L,R);
if(R>m+) query(rs,L,R);
pushup(rt);
}
bool comp(pe x,pe y)
{
return x.a<y.a;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=;i<=n;i++)
cin>>s[i].a>>s[i].b>>s[i].c;
sort(s+,s+n+,comp);
btree(,n,);
int ans=;
for(int i=;i<=n;i++)
{
res=inf;
query(,n,,,s[i].b);
// cout<<res<<endl;
if(res<s[i].c)ans++;
update(,n,,s[i].b,s[i].c);
}
cout<<n-ans<<endl;
}
return ;
}
/********************
3
3
2 3 2
3 2 3
1 1 1
3
1 2 3
2 3 1
3 1 2
10
1 7 10
3 9 7
2 2 9
5 10 8
4 3 5
7 5 2
6 1 3
9 6 6
8 4 4
10 8 1
********************/

Segment Tree

线段树比树状数组慢

2015 Benelux Algorithm Programming Contest (BAPC 15)E - Excellent Engineers的更多相关文章

  1. 2014 Benelux Algorithm Programming Contest (BAPC 14)E

    题目链接:https://vjudge.net/contest/187496#problem/E E Excellent Engineers You are working for an agency ...

  2. 2018 Benelux Algorithm Programming Contest (BAPC 18)

    目录 Contest Info Solutions A A Prize No One Can Win B Birthday Boy C Cardboard Container D Driver Dis ...

  3. 2015 Benelux Algorithm Programming Contest I- Interesting Integers

    题目大意:给你一个数字n(n<=1e9) ,让你求一个能包含这个数的斐波那契数列的第一项a 和第二项b,找出b最小的那个. 帮我复习了一下扩展欧几里得.... 思路:a,b,a+b,a+2b…… ...

  4. 2015 Benelux Algorithm Programming Contest E-Excellent Engineers

    题目大意:有n个人,每个人都有三个物品,排名分别为a[ i ],b[ i ],b[ i ],现在要删掉其中的一些人 如果一个人x的三个物品的排名为a[ x ],b[ x ],b[ x ],若存在另一个 ...

  5. 2018 Benelux Algorithm Programming Contest (BAPC 18)I In Case of an Invasion, Please. . .

    题意:一副无向有权图,每个点有一些人,某些点是避难所(有容量),所有人要去避难所,问最小时间所有人都到达避难所, 题解:dij+二分+最大流check,注意到避难所最多10个,先挨个dij求到避难所的 ...

  6. Gym -102007 :Benelux Algorithm Programming Contest (BAPC 18) (寒假自训第5场)

    A .A Prize No One Can Win 题意:给定N,S,你要从N个数中选最多是数,使得任意两个之和不大于S. 思路:排序,然后贪心的选即可. #include<bits/stdc+ ...

  7. 2017 Benelux Algorithm Programming Contest (BAPC 17) Solution

    A - Amsterdam Distance 题意:极坐标系,给出两个点,求最短距离 思路:只有两种方式,取min  第一种,先走到0点,再走到终点 第二种,走到同一半径,再走过去 #include ...

  8. 2015 German Collegiate Programming Contest (GCPC 15) + POI 10-T3(12/13)

    $$2015\ German\ Collegiate\ Programming\ Contest\ (GCPC 15) + POI 10-T3$$ \(A.\ Journey\ to\ Greece\ ...

  9. Benelux Algorithm Programming Contest 2014 Final(第二场)

    B:Button Bashing You recently acquired a new microwave, and noticed that it provides a large number ...

随机推荐

  1. PHPExcel实现上传excel文件导入数据库

            项目中需要批量导入数据,感觉这个需求以后也会经常用,必须总结分享下: 引入jquery的第三方表单插件: <scripttype="text/javascript&qu ...

  2. Js前台页面搜索

    $("#filter").on("keyup",function(){$(".aimed_list").hide().filter(&quo ...

  3. 0201-开始使用Spring Cloud实战微服务准备工作

    1.Spring Cloud是什么 基于spring boot,之上快速构建分布式系统的工具集 服务注册和发现[eureka.Consul.Zookeeper].服务负载均衡[Ribbon,feign ...

  4. 005-MYSQL数据库设计原则

    1.核心原则 不在数据库做运算; cpu计算务必移至业务层; 控制列数量(字段少而精,字段数建议在20以内); 平衡范式与冗余(效率优先:往往牺牲范式) 拒绝3B(拒绝大sql语句:big sql.拒 ...

  5. Oracle学习笔记—Oracle左连接、右连接、全外连接以及(+)号用法(转载)

    转载自: Oracle左连接.右连接.全外连接以及(+)号用法 对于外连接,Oracle中可以使用“(+)”来表示. 关于使用(+)的一些注意事项: (+)操作符只能出现在WHERE子句中,并且不能与 ...

  6. 001infor record 计划时间取值增强-20150622

    ZMD_MRP_PARAMETERS 3000公司下工厂跑MRP时,如果为外购则通过外挂表取infor record计划交期. METHOD if_ex_md_mrp_parameters~adjus ...

  7. C/C++ 关键字的使用方法详解

    cppreference.com -> C/C++ 关键字 -> 细节 C/C++ 关键字 asm 语法: asm( "instruction" ); asm允许你在你 ...

  8. C#如何使用结构化异常处理

    Knowledge Base: Chinese (Simplified) 如何使用 Visual C# .NET 和 Visual C# 2005 中的结构化异常处理文章ID: 816157 最近更新 ...

  9. HTMLbutton控件中文字显示一直不居中

    在写HTML时,发现HTML中button控件中文字显示一直不居中, 最后发现是在标签前出现了一个全角空格引起的. 在Emeditor中将不显示的字符(空格,全角空格,换行,制表符)设置为显示,就可以 ...

  10. Python函数之—— 装饰器(Day13)

    一.什么是装饰器 顾名思义,装饰器指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 二.装饰器需要遵循的原则 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数 ...