P1007排座椅

思路:每当出现存在同一行有会交头接耳的同学我们就把他们用其中列数较小的一个截下所能阻止的学生对数++,在线处理(按照所有通道所能阻止的人数进行降序排序)完之后用一种贪心策略即选取前k和前l个通道可以满足决策最优化,即最后行列各需要四次快排(2333还好有sort黑科技)

#include
#include
#include
#include
#include
using namespace std;
struct way
{
	int id,student;
}hang[2002],lie[2002];
int comp1(way a,way b)
{
	return a.student>b.student;
}
int comp2(way a,way b)
{
	return a.id>m>>n>>k>>l>>d;
	int xi,yi,pi,qi;
	for (int i=1;i<=m;i++)
		hang[i].id=i,hang[i].student=0;
	for (int i=1;i<=n;i++)
	    lie[i].id=i,lie[i].student=0;
	for (int i=1;i<=d;i++)
    {
    	cin>>xi>>yi>>pi>>qi;
    	if (xi==pi) 
			lie[min(yi,qi)].student++;  	
		else  
			hang[min(xi,pi)].student++;
    }
    sort(hang+1,hang+1+m,comp1);
    sort(lie+1,lie+1+n,comp1);
    sort(hang+1,hang+k+1,comp2);
    sort(lie+1,lie+l+1,comp2);
    for (int i=1;i<=k;i++)
    	cout<


你可能感兴趣的:(tyvj前100题,贪心,模拟)