2022春每日一题:Day 27
2024-09-08 17:29:07
题目:友好城市
分析一下可以转化为:选取最多的点对,使得点对之间连线没有交点,没有交点说明什么,假设选定第i组,则对于任意的j,一定满足a[i].l<a[j].l && a[i].r<a[j].r或者a[i].l>a[j].l && a[i].r>a[j].r,那么就可以先按左端点排序,再求一遍最长上升子序列,就解决了。
其实也可以继续优化到nlogn,但是没必要,对于本题的5000,n^2复杂度已经足以。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
const int N=5e3+5;
using namespace std;
struct pos
{
int l,r;
pos(int ll,int rr)
{
l=ll;r=rr;
}
pos(){
}
friend bool operator < (pos a,pos b)
{
return a.l<b.l;
}
}e[N];
int n,f[N];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int l,r;
scanf("%d %d",&l,&r);
e[i]=pos(l,r);
}
sort(e+1,e+1+n);
int ret=0;
for(int i=1;i<=n;i++)
{
f[i]=1;
for(int j=1;j<i;j++)
if(e[i].r>e[j].r)
f[i]=max(f[i],f[j]+1);
ret=max(ret,f[i]);
}
printf("%d\n",ret);
return 0;
}
最新文章
- [WPF]DataGridHyperlinkColumn网址过长TextTrimming无效
- yii过滤xss代码,防止sql注入
- [转]源代码的管理和发布:以SVN为例
- StdRandom.java
- 利用d3.js绘制雷达图
- Android实现异步处理 -- HTTP请求
- MySQL开启binlog并且保存7天有效数据
- iOS中 自定义cell升级版 (高级)
- percona-5.7二进制多实例安装
- 解决RAID重启后自动更名为md127
- Visual Studio使用Web Deploy远程发布网站及其配置
- SQL-5查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工
- Python 数据处理库 pandas 入门教程
- c++计时
- Enum 枚举值 (一) 获取描述信息
- SRA秘钥生成与解密
- 【技术分享会】 @第二期 微信开放API简述-0212
- 【转】Java中Synchronized的用法
- TextView UI美化-------自适应字体控件
- 时间序列分析工具箱—— h2o + timetk