【codevs 1643】线段覆盖 3
2016-10-06 14:54
246 查看
数据大到nlogn没法做。。
然而我做1的时候用的就是贪心算法。。
所以无影响。。
并且到这个地步。。
基本上就是卡IO操作了(输入输出)
cin/cout会比较慢
关闭流同步后能快一倍
再快就只能用scanf/printf
或者手写读入函数(读入优化技巧
#include<bits/stdc++.h>
using namespace std;
#define Rep(i,a,b) for(int i=(a);i<=(b);i++)
int n;
struct Seg{
int l,r;
}e[1000010];
bool cmp(Seg x,Seg y)
{
if(x.r==y.r)return x.l>y.l;
else return x.r<y.r;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n;
Rep(i,1,n)
{
cin>>e[i].l>>e[i].r;
if(e[i].l>e[i].r)swap(e[i].l,e[i].r);
}
sort(e+1,e+1+n,cmp);
int tot = 0,last = -1;
Rep(i,1,n)
{
if(e[i].l>=last)
{
last = e[i].r;
tot ++;
}
}
cout<<tot;
return 0;
}
然而我做1的时候用的就是贪心算法。。
所以无影响。。
并且到这个地步。。
基本上就是卡IO操作了(输入输出)
cin/cout会比较慢
关闭流同步后能快一倍
再快就只能用scanf/printf
或者手写读入函数(读入优化技巧
#include<bits/stdc++.h>
using namespace std;
#define Rep(i,a,b) for(int i=(a);i<=(b);i++)
int n;
struct Seg{
int l,r;
}e[1000010];
bool cmp(Seg x,Seg y)
{
if(x.r==y.r)return x.l>y.l;
else return x.r<y.r;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n;
Rep(i,1,n)
{
cin>>e[i].l>>e[i].r;
if(e[i].l>e[i].r)swap(e[i].l,e[i].r);
}
sort(e+1,e+1+n,cmp);
int tot = 0,last = -1;
Rep(i,1,n)
{
if(e[i].l>=last)
{
last = e[i].r;
tot ++;
}
}
cout<<tot;
return 0;
}
相关文章推荐
- CODEVS1643 线段覆盖3[贪心]
- 【codevs】线段覆盖系列 贪心&&动规
- Codevs_P3037 线段覆盖 5(DP+二分)
- Codevs 3027 线段覆盖 2
- codevs 1214 线段覆盖
- codevs 1214 线段覆盖/1643 线段覆盖 3
- codeVS 1214 线段覆盖
- 【codevs 1214】线段覆盖
- 【codevs1643】线段覆盖3
- 1643 线段覆盖 3
- codevs 1643 线段覆盖 3
- 【专题·线段覆盖系列】Codevs线段覆盖12345
- codevs 3027 线段覆盖 2 解题报告 (序列型DP)
- 【Codevs 3027】线段覆盖2
- codevs 1214 线段覆盖
- codevs3012 线段覆盖 4 dp好题
- codevs 1643 线段覆盖 3(贪心+快排)
- 【codevs 3012】线段覆盖 4
- codevs3037 线段覆盖5 离散化DP
- CODEVS 3027线段覆盖2