博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACdream 1216 (ASC训练1) Beautiful People(DP)
阅读量:5812 次
发布时间:2019-06-18

本文共 891 字,大约阅读时间需要 2 分钟。

题目地址:

pid=1216

这题一開始用的是线段树。后来发现查询的时候还须要DP处理。挺麻烦。。也就不了了之了。。后来想到,这题事实上就是一个二维的最长上升子序列。

要先排序,先按左边的数为第一keyword进行升序排序。再按右边的数为第二keyword进行降序排序。这种话,第一keyword同样的的肯定不在一个同一个上升子序列中。然后仅仅对第二keyword进行复杂度为O(n*logn)的DP,找出最长上升序列,然后处理前驱,并输出就可以。

代码例如以下:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define LL long longstruct node{ int x, y, num;}fei[110000];int cmp(node x, node y){ if(x.x==y.x) return x.y>y.y; return x.x
>1; if(a[mid]>=x) { high=mid-1; ans=mid; } else { low=mid+1; } } return ans;}int main(){ int n, i, j, pos, cnt; while(scanf("%d",&n)!=EOF) { for(i=0;i
a[len]) { a[++len]=fei[i].y; pre[i]=d[len-1]; d[len]=i; } else { pos=bin_seach(fei[i].y); a[pos]=fei[i].y; pre[i]=d[pos-1]; d[pos]=i; } } printf("%d\n",len); cnt=0; /*for(i=0;i

转载地址:http://mlvbx.baihongyu.com/

你可能感兴趣的文章
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
C语言数据类型char
查看>>
Online Patching--EBS R12.2最大的改进
查看>>
Binary Search Tree Iterator leetcode
查看>>
Oracle性能优化--DBMS_PROFILER
查看>>
uva-317-找规律
查看>>
Event事件的兼容性(转)
查看>>
我的2014-相对奢侈的生活
查看>>
zoj 2412 dfs 求连通分量的个数
查看>>
Java设计模式
查看>>
一文读懂 AOP | 你想要的最全面 AOP 方法探讨
查看>>
ndk制作so库,ndk-build不是内部或外部命令。。。的错误
查看>>
Spring Cloud 微服务分布式链路跟踪 Sleuth 与 Zipkin
查看>>
ORM数据库框架 SQLite 常用数据库框架比较 MD
查看>>
STL_算法_依据第n个元素排序(nth_element)
查看>>
BNU 34990 Justice String (hash+二分求LCP)
查看>>
华为OJ 名字美丽度
查看>>
Android 带清除功能的输入框控件EditTextWithDel
查看>>