您的位置:首页 > 其它

Problem A

2016-03-17 11:00 148 查看
经过一晚上,加一上午的努力,终于把第一道题给做出来了,具体解题思路如下:

现将房间数的开始结束,输入结束房间,然后对结束房间数排序,再比较开始房间跟上个结束房间是否冲突,如冲突则跳过,不冲突则加一,最后返回count的数值!

这几天编译器不行,我都快崩贵了,不过苍天不负有心人,终于还是能运行了!

代码如下:

#include <iostream>

#include <string.h>

#include <algorithm>

using namespace std;

class Action

{

public:

    int Ti_s;

    int Ti_o;

};

bool cmp( Action a, Action b)

 {

     return (a .Ti_o<b .Ti_o);

 }

bool cmp11(int a,int b)

{

    return a>b;

}

 int GreedySelector(int n,Action a[])

{

    int num[201] ;

    memset(num,0,sizeof(num));

    int i;

    for(i=0;i<n;i++)

    {

        for(int j=i+1;j<n;j++)

        {

            if(a[j].Ti_s<=a[i].Ti_o)

                {num[i]++;}

        }

    }

    sort(num,num+n,cmp11);

    return (num[0]+1)*10;

}

int main()

{

    Action object[201];

    int n;

    int T;

    cin>>T;

    for(int ii=0;ii<T;ii++)

    {

        cin>>n;

        for(int i=0;i<n;i++)

        {

            int a,b;

            cin>>a>>b;

            if(a>b)

            {

                int temp=a;

                a=b;b=temp;

            }

            object[i].Ti_s=(a+1)/2;

            object[i].Ti_o=(b+1)/2;

        }

        sort(object,object+n,cmp);

        cout<<GreedySelector(n,object)<<endl;

    }

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: