题解 P1803 【凌乱的yyy / 线段覆盖】
根据dalao们的思路,理所当然地贪心
贪心思路:按结束时间排序
贴代码:
#include<bits/stdc++.h>
using namespace std;
int inp1,inp2,n,now=-999999999,tot;
struct tmpk
{
int be,en;//即begin和end
}qj[1000010];//qj即区(qu)间(jian)
int cmp(tmpk a,tmpk b)
{
return a.en<b.en;
return a.be>b.be;//sort结构体排序,结束时间早的优先
}
int main()
{
//freopen("inte.in","r",stdin);
//freopen("inte.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>inp1>>inp2;
qj[i].be=min(inp1,inp2);
qj[i].en=max(inp1,inp2);//不知道开始在不在前
}
sort(qj+1,qj+n+1,cmp);//理所当然地sort
for(int i=1;i<=n;i++)
{
if(qj[i].be<now)
{
tot++;
//cout<<qj[i].be<<" "<<qj[i].en<<endl;//中间结果
}
else
{
now=qj[i].en;//now即目前时间
}
}
cout<<n-tot;//总-排除的
return 0;
}
拒绝copyQAQ