不充钱,你怎么AC?

  题目:http://codevs.cn/problem/1214/

  这道题类似于最长区间覆盖,仅仅是将最长区间改成了最多线段,我们贪心即可

  先将线段直接右边-1,然后按左边为第一关键字,右边为第二关键字升序排序,我们发现对于以下这种情况,是可以直接将黑色的线段删除的,因为要求线段最多,也就是每个区间要最小。

        

  最后从左往右扫,卡一个最右端点,遇到大于右端点的就更新,时间复杂度 O(n2),删线段可以优化到 nlog2n 但是 n 只有100就懒得打了~

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#define N 101
using namespace std; struct line
{
int l,r;
}
a[N];
bool f[N];
int n,ans;
bool cmp(line x,line y)
{
return (x.l<y.l)||((x.l==y.l)&&(x.r<y.r));
}
int main()
{
int i,j;
scanf("%d",&n);
for (i=;i<=n;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
if (a[i].l>a[i].r) swap(a[i].l,a[i].r);
a[i].r--;
f[i]=;
}
sort(a+,a++n,cmp);
for (i=;i<n;i++)
{
for (j=i+;j<=n;j++)
{
if (a[j].l>a[i].r) break;
if (a[j].r<=a[i].r)
{
f[i]=;
break;
}
}
}
j=-;
for (i=;i<=n;i++)
{
if (f[i]||a[i].l<=j) continue;
ans++;
j=a[i].r;
}
printf("%d\n",ans);
return ;
}

最新文章

  1. 【OAuth2.0】Spring Security OAuth2.0篇之初识
  2. ref
  3. 解决yum报错集
  4. .net AES加密解密
  5. Asp.Net 注册 邮箱激活
  6. QT绘制半透明窗体(改写paintEvent,超级简单)
  7. python xpath
  8. BitMap画图
  9. app每个页面都有一个相同的浮层控件 实现思路
  10. abs函数
  11. Bootsrap 的 Carousel
  12. dedecms的include文件夹是干什么的?
  13. python基础7之python3的内置函数
  14. 爬取知名社区技术文章_article_3
  15. Windows下Nginx实现负载均衡
  16. [书籍]重温《Framework Design Guidelines》
  17. windows系统下mysql-8.0.13-winx64(zip安装)
  18. JAVA的基本数据类型和类型转换
  19. 极验验证使用-滑动&amp;选字验证码
  20. Java面试题 corejava(一)

热门文章

  1. CERC2017 F: Faulty Factorial 简单数论题
  2. Java设置模式
  3. PHP.30-TP框架商城应用实例-后台6-商品会员价格删除-外键,级联操作
  4. WPF开发实例——仿QQ登录界面
  5. CSS3---混合模式
  6. 3 破解密码,xshell连接
  7. python 表格存取方法(转)
  8. CenOS 配置C/C++语言
  9. C# 委托、Lambda表达式和事件——学习总结
  10. 《Cracking the Coding Interview》——第17章:普通题——题目2