意甲冠军:一个人有两个属性S, B(1 ≤ Si, Bi ≤ 10^9),当两个人满足这两个属性 S1 < S2 && B1 < B2 要么 S1 > S2 && B1 > B2 时间,这两个男人不讨厌对方。现在给 N 个人(2 ≤ N ≤ 100 000)的属性,求最多能有多少个人,他们之间随意两人都不会讨厌对方。

题目链接:http://acdream.info/problem?pid=1216

——>>easy想到是一个二维的LIS模型。。

二维降一维,控制当中一维递增,对还有一维求LIS。

(主要是在排序的时候。让第一维从小到大排,第二维从大到小排,那么,排序后对第二维求LIS的结果肯定不会出现当中的元素相应的第一维是同样的,由于同样的第一维相应的第二维是递减的,而对第二维求LIS是严格递增的。

。)

#include <cstdio>
#include <algorithm>
#include <cstring> using std::sort;
using std::lower_bound; const int MAXN = 100000 + 10;
const int INF = 0x3f3f3f3f; struct PERSON
{
int id;
int S;
int B; bool operator < (const PERSON& e) const
{
return S < e.S || (S == e.S && B > e.B);
}
} person[MAXN]; int N;
int buf[MAXN];
int lis[MAXN], who[MAXN], fa[MAXN], cnt; int LIS()
{
int ret = 1; memset(lis, 0x3f, sizeof(lis));
memset(fa, -1, sizeof(fa));
who[0] = -1;
for (int i = 1; i <= N; ++i)
{
int id = lower_bound(lis + 1, lis + 1 + N, buf[i]) - lis;
lis[id] = buf[i];
who[id] = i;
fa[i] = who[id - 1];
if (id > ret)
{
ret = id;
}
} return ret;
} void Read()
{
for (int i = 1; i <= N; ++i)
{
scanf("%d%d", &person[i].S, &person[i].B);
person[i].id = i;
}
} void Init()
{
sort(person + 1, person + 1 + N);
for (int i = 1; i <= N; ++i)
{
buf[i] = person[i].B;
}
} void Output(int x)
{
if (fa[x] == -1)
{
printf("%d", person[x].id);
return;
}
Output(fa[x]);
printf(" %d", person[x].id);
} void Solve()
{
cnt = LIS();
printf("%d\n", cnt);
Output(who[cnt]);
puts("");
} int main()
{
while (scanf("%d", &N) == 1)
{
Read();
Init();
Solve();
} return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

acd - 1216 - Beautiful People(DLIS)的更多相关文章

  1. 【CF55D】Beautiful numbers(动态规划)

    [CF55D]Beautiful numbers(动态规划) 题面 洛谷 CF 题解 数位\(dp\) 如果当前数能够被它所有数位整除,意味着它能够被所有数位的\(lcm\)整除. 所以\(dp\)的 ...

  2. 小白学 Python 爬虫(21):解析库 Beautiful Soup(上)

    小白学 Python 爬虫(21):解析库 Beautiful Soup(上) 人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前 ...

  3. 小白学 Python 爬虫(22):解析库 Beautiful Soup(下)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  4. Redraw Beautiful Drawings(hdu4888)网络流+最大流

    Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...

  5. ACdream 1216 (ASC训练1) Beautiful People(DP)

    题目地址:http://acdream.info/problem? pid=1216 这题一開始用的是线段树.后来发现查询的时候还须要DP处理.挺麻烦..也就不了了之了..后来想到,这题事实上就是一个 ...

  6. hdu4782 Beautiful Soup (模拟)

    http://acm.hdu.edu.cn/showproblem.php?pid=4782 2013成都区域赛全题PDF:http://acm.hdu.edu.cn/downloads/2013Ch ...

  7. HDU 6351 Beautiful Now(DFS)多校题解

    思路:一开始对k没有理解好,题意说交换k次,如果我们不需要交换那么多,那么可以重复自己交换自己,那么k其实可以理解为最多交换k次.这道题dfs暴力就行,我们按照全排列最大最小去找每一位应该和后面哪一位 ...

  8. 洛谷4755 Beautiful Pair (分治)

    题目描述 小D有个数列 \(a\),当一个数对 \((i,j)(i\le j)\) 满足\(a_i\)和\(a_j\)的积 不大于 \(a_i \cdots a_j\) 中的最大值时,小D认为这个数对 ...

  9. 北邮校赛 I. Beautiful Array(DP)

    I. Beautiful Array 2017- BUPT Collegiate Programming Contest - sync 时间限制 1000 ms 内存限制 65536 KB 题目描述 ...

随机推荐

  1. 设计模式——工厂模式(Factory)

    要想正确理解设计模式,首先必须明白它是为了解决什么问题而提出来的. 设计模式学习笔记 --Shulin 转载请注明出处:http://blog.csdn.net/zhshulin 1.概念 工厂模式定 ...

  2. 关于委托:异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }

    异常{ 无法将 匿名方法 转换为类型"System.Delegate",因为它不是委托类型 } 委托实际上是把方法名作为参数,但是若有好多个方法时,就要指明是哪个参数  查看如下代 ...

  3. UVA - 12338 Anti-Rhyme Pairs (哈希)

    Description D Anti-Rhyme Pairs Input: Standard Input Output: Standard Output Often two words that rh ...

  4. Oracle 工艺结构

    Oracle工艺结构 这个过程是动态创建,完毕任务后就消亡:而程序是静态的实体,程序是能够复制.编辑的.进程强调的是运行过程,而程序不过指令的有序集合:进程在内存中,程序在外存中. ORACLE分为用 ...

  5. Atitit.Hibernate于Criteria 使用汇总and 关系查询 and 按照子对象查询 o9o

    Atitit.Hibernate于Criteria 使用总结and 关联查询 and 依照子对象查询 o9o 1. Criteria,,Criterion ,, 1 <2. 基本的对象黑头配置磊 ...

  6. Java误区: 静态代码块,当把类将被载入到自己主动运行?

    JAVA静态代码块会在类被载入时自己主动运行? 非常多Java开发人员的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn ...

  7. 为什么OC语言很难

    作为一个Objective-C的coder,我总能听到一部分人在这门语言上抱怨有很多问题.他们总在想快速学习这门语言来写一个App出来,但他们也总是联想到Objective-C看上去实在太难了或者在想 ...

  8. Html5用Canvas制作画图板

    需求: 绘制多边形 可填充颜色 可设置文字 可移动,可删除 鼠标按住后,抬起之前线段应该尾随鼠标当前位置 可与后台方便的进行数据交互,保存到后台,或将数据从后台取到前台显示对应的图形 思考: 第一想到 ...

  9. Java彻底 - WEB容器的侦听具体解释 ServletContextListener

    WEB容器的侦听器ServletContextListener主要用于监测容器启动和 当破坏需要做一些操作,听众将能够使用此做. ServletContextListener在Spring开始,然后再 ...

  10. 为RadComboBox添加SelectionChanging事件

    代码非标准,仅供参考. using System; using System.Collections.Generic; using System.Linq; using System.Windows. ...