0
点赞
收藏
分享

微信扫一扫

poj1083,nyoj220推桌子 贪心


#include <stdio.h><span style="font-family: Arial, Helvetica, sans-serif;">//注意两点,桌子可能从编号高的房间推到编号低的房间。如果2 3 ,4 5也是要分两次进行。因为3和4在同一走廊。</span>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
int star,end;
}c[205];
bool cmp(node x,node y)
{
if(x.star<y.star) return true;
if(x.star==y.star&&x.end<y.end) return true;
return false;
}
int main()
{
int test,n,flag[205],temp;
scanf("%d",&test);
while(test--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d %d",&c[i].star,&c[i].end);
if(c[i].star%2)
c[i].star++;
if(c[i].end%2)
c[i].end++;
if(c[i].star>c[i].end)
temp=c[i].star,c[i].star=c[i].end,c[i].end=temp;//如果左边大于右边 交换顺序
}
sort(c,c+n,cmp);
memset(flag,0,sizeof(flag));//记录
int count=0;
for(int i=0;i<n;i++)//贪心的思想
{
if(!flag[i])
{
count++,flag[i]=1;
for(int j=i+1;j<n;j++)
if(c[j].star>c[i].end&&!flag[j])
flag[j]=1,c[i].end=c[j].end;
}
}
printf("%d\n",count*10);
}
return 0;
}


举报

相关推荐

0 条评论