【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 ...
随机推荐
- 004_zookeeper运维之maxClientCnxns overflow
一. 线上默认设置:maxClientCnxns=120 #可通过修改这个值来进行解决 二. 在10.103.110.51这个ip上执行以下命令,进行查看连接情况 [root@10.103.101 ...
- qt 免注册下载
下载地址为: http://download.qt.io/
- ubuntu安装 opencv-3.4.3
1 .官网(https://opencv.org/releases.html)下载下源码 opencv-3.4.3.zip 2.解压 unzip opencv-3.4.3.zip 3.cmake c ...
- nginx 403 forbidden
2018年3月9日14:11:59 总结一下: 1. 查看目录或者文件是否是可读可执行 2. 查看nginx配置的server -> location -> index指令, 看其列出的入 ...
- Light OJ 1116
基础数学:.. #include<bits/stdc++.h> using namespace std; typedef unsigned long long ULL; int main( ...
- 【原创】大数据基础之Kerberos(2)hive impala hdfs访问
1 hive # kadmin.local -q 'ktadd -k /tmp/hive3.keytab -norandkey hive/server03@TEST.COM'# kinit -kt / ...
- Swap交换分区概念
什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RAM (random acc ...
- flex下部固定高,上部不固定,而且超过内容要滚动
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- C# 中使用 Excel
using System;using System.Collections.Generic;using System.Text;using System.Reflection;using System ...
- Confluence 6 数据中心的缓存
在 Confluence 数据中心(集群)你需要分布缓存和每一个节点的缓存.在集群管理界面,将会定义分布缓存和节点本地缓存. 缓存配置文件存储在集群共享目录中的 home 目录下面. https:// ...