题解 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

posted @ 2018-12-27 21:44  G_A_TS  阅读(456)  评论(0编辑  收藏  举报