博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces:"North-East"
阅读量:6174 次
发布时间:2019-06-21

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

Codeforces:"North-East"

题目链接:

题目大意:空间内有$n$个点,现取$x$和$y$严格递增的点组成最长序列,问可能取到哪些点,一定取到哪些点.

DP

这道题要求的是二维LIS,可以按$x$递增排序将其降为一维,当横坐标相等时,因为要求坐标严格递增,按$y$递减排序。

从后面往前搞,$maxy[len]$记录LIS长度为$len$的点的最大$y$,若以当前点为结尾的LIS长度为$len$,当前点的$y$小于$maxy[len+1]$则为可能取到的点。

代码如下:

1 #include 
2 #include
3 #include
4 #include
5 #define N 100005 6 using namespace std; 7 struct node{ 8 int x,y,id; 9 friend bool operator<(node a,node b){10 if(a.x==b.x)return a.y>b.y;11 return a.x
v[N];17 set
A,B;18 void init(){19 freopen("input.txt","r",stdin);20 freopen("output.txt","w",stdout);21 }22 bool cmp(int x,int y){23 return val[x]>val[y];24 }25 void output(){26 printf("%d",A.size());27 for(set
::iterator it=A.begin();it!=A.end();++it)28 printf(" %d",*it);29 printf("\n");30 printf("%d",B.size());31 for(set
::iterator it=B.begin();it!=B.end();++it)32 printf(" %d",*it);33 printf("\n");34 }35 int main(void){36 init();37 scanf("%d",&n);38 for(int i=0;i
=0;--i){55 int id=a[i].id;56 int p=pos[id];57 if(val[id]

 

转载于:https://www.cnblogs.com/barrier/p/6821796.html

你可能感兴趣的文章
阿里云OTS(开放结构化数据服务)可视化管理工具的设计和功能介绍
查看>>
Github创建分支
查看>>
转换PHP脚本成为windows的执行程序
查看>>
Python组织文件 实践:将带有美国风格日期的文件改名为欧洲风格日期
查看>>
实现iOS7上tableView的切割线像iOS6中的效果
查看>>
如何用纯 CSS 创作一个按钮文字滑动特效
查看>>
Android BottomNavigationBar底部导航控制器的使用
查看>>
HBase+Spark技术双周刊 第七期
查看>>
QDS03 pip
查看>>
「镁客早报」诺基亚发布世界首款后置五摄手机;微软发布HoloLens 2新一代混合现实设备...
查看>>
安装PageAdmin Cms时候“System.ServiceModel.Activation.HttpModule”错误的解决办法
查看>>
升级用户创建
查看>>
【答疑】对象存储OSS常见问题解答(咨询类1)
查看>>
DSP_代码笔记(基于TMS320X281x)| CPU定时器0模块
查看>>
Android中实现短信验证码自动填入
查看>>
Linkflow连接云获百万美元A轮融资,金沙江创投投资
查看>>
开发网络视频直播系统需要注意的地方
查看>>
使用MaxCompute Java SDK运行安全相关命令
查看>>
小白的学习笔记 —— React环境构建 & 常用语法
查看>>
PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.8. 异步提示
查看>>