【BZOJ2298】[HAOI2011]problem a
题解:
虽然也是个可以过得做法。。。但又没有挖掘到最简单的做法。。。
正解是发现这个东西等价于求不相交区间个数
直接按照右端点排序,然后贪心就可以O(n)过了
而我的做法是按照a排序(其实我是在模拟这个过程但我没有发现他的本质。。。)
然后f[i][j]表示前i个,最大要求为j的最大值
然后用线段树来优化这个东西
一个地方存在的东西还要取个min
代码:
#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define mid ((h+t)/2)
const int N=2e5+;
struct re{
int a,b,c;
}a[N],b[N];
bool cmp(re x,re y)
{
return (x.a<y.a||(x.a==y.a&&x.b<y.b));
}
struct sgt{
int v[N*];
int find(int x,int h,int t,int h1,int t1)
{
if (t1<h1) return();
if (h1<=h&&t<=t1) return(v[x]);
int ans=;
if (h1<=mid) ans=find(x*,h,mid,h1,t1);
if (mid<t1) ans=max(ans,find(x*+,mid+,t,h1,t1));
return(ans);
}
void change(int x,int h,int t,int pos,int k)
{
if (h==t)
{
v[x]=max(v[x],k); return;
}
if (pos<=mid) change(x*,h,mid,pos,k);
else change(x*+,mid+,t,pos,k);
v[x]=max(v[x*],v[x*+]);
}
}S;
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
int n;
cin>>n;
rep(i,,n) cin>>a[i].a>>a[i].b;
sort(a+,a+n+,cmp);
int l=;
rep(i,,n)
if (a[i].a==a[i-].a&&a[i].b==a[i-].b)
b[l].c++,b[l].c=min(b[l].c,n-a[i].a-a[i].b);
else
{
b[++l].a=a[i].a; b[l].b=a[i].b; b[l].c=;
}
rep(i,,l)
{
int x=S.find(,,n,,b[i].a);
S.change(,,n,n-b[i].b,x+b[i].c);
}
int ans=S.find(,,n,,n);
cout<<n-ans<<endl;
return ;
}
【BZOJ2298】[HAOI2011]problem a的更多相关文章
- 【BZOJ2298】[HAOI2011]problem a DP
[BZOJ2298][HAOI2011]problem a Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相 ...
- 【BZOJ2302】[HAOI2011]Problem C(动态规划)
[BZOJ2302][HAOI2011]Problem C(动态规划) 题面 BZOJ 洛谷 题解 首先如果\(m=0\)即没有特殊限制的话,那么就和这道题目基本上是一样的. 然而这题也有属于这题的性 ...
- 【bzoj2301】 HAOI2011—Problem b
http://www.lydsy.com/JudgeOnline/problem.php?id=2301 (题目链接) 题意 给出${a,b,c,d,k}$,${n}$组询问,求$${\sum_{i= ...
- 【bzoj2301】[HAOI2011]Problem b 莫比乌斯反演
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- 【Luogu4137】Rmq Problem/mex (莫队)
[Luogu4137]Rmq Problem/mex (莫队) 题面 洛谷 题解 裸的莫队 暴力跳\(ans\)就能\(AC\) 考虑复杂度有保证的做法 每次计算的时候把数字按照大小也分块 每次就枚举 ...
- 【BZOJ2299】[HAOI2011]向量(数论)
[BZOJ2299][HAOI2011]向量(数论) 题面 BZOJ 洛谷 题解 首先如果我们的向量的系数假装可以是负数,那么不难发现真正有用的向量只有\(4\)个,我们把它列出来.\((a,b)(a ...
- 【BZOJ4999】This Problem Is Too Simple!(线段树)
[BZOJ4999]This Problem Is Too Simple!(线段树) 题面 BZOJ 题解 对于每个值,维护一棵线段树就好啦 动态开点,否则空间开不下 剩下的就是很简单的问题啦 当然了 ...
- 【BZOJ2300】[HAOI2011]防线修建 set维护凸包
[BZOJ2300][HAOI2011]防线修建 Description 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可 ...
- 【bzoj3339】Rmq Problem
[bzoj3339]Rmq Problem Description Input Output Sample Input 7 50 2 1 0 1 3 21 32 31 43 62 7 Sample ...
随机推荐
- 设计模式C++学习笔记之二(Proxy代理模式)
代理,一看名字就知道这只是个中介而已,真实的执行者在代理的后面呢.cbf4life在他的书里提的例子也很有趣,更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com.现在贴 ...
- SharePoint 2016 vs部署报错:无法加载功能xxx未能加载文件或程序集xxx或它的某一个依赖项。系统找不到指定的文件
环境描述: SharePoint 2016 单服务器场模式 开发工具:VS2017,项目类型(功能):计时器. 问题描述: 在用vs直接部署时,报错如下: 部署步骤"激活功能"中出 ...
- VS2013中如何解决error C4996: 'fopen'问题
今天编写控制台应用程序时出现如下错误 error C4996: 'fopen': This function or variable may be unsafe. Consider using fop ...
- MSSQL—行转列
行转列,是SQL中经常会遇到的一个问题,并且分为静态转换和动态转换,所谓静态转换即在转换的行数已知或固定:动态转换则为转换的行数不固定. 转换的方法一般采用case when语句或pivot(MSSQ ...
- Centos7升级gcc版本方法之一使用scl软件集
Centos7 gcc版本默认4.8.3,Red Hat 为了软件的稳定和版本支持,yum 上版本也是4.8.3,所以无法使用yum进行软件更新,所以使用scl. scl软件集(Software Co ...
- jmeter4.0的汉化
一,刚刚安装好,我们看到的是这个界面: 二,option-——>choose language -——>Chinese simplified,然后就可以啦!
- hadoop 透明加密
hadoop 透明加密 hadoop 透明加密 kms transparent 2015年04月09日 18:12:20 糖糖_ 阅读数:12248 标签: transparenthadoop kms ...
- jQuery实现鼠标点击div外的地方div隐藏消失的效果(转)
转:https://www.cnblogs.com/jsingleegg/p/3456152.html css部分: <style type="text/css">.p ...
- c# 操作Word总结(车)
在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很多的字段,而且操作很繁琐,于是想到网页的信息创建到一个word文本中,在显示的时,可以在线打开 ...
- SpringData使用与整合
SpringData 整合源码:链接: https://pan.baidu.com/s/1_dDEEJoqaBTfXs2ZWsvKvA 提取码: cp6s(jar包自行寻找) author:Simpl ...