HDU_1050 1051 [贪心]_水

来源:互联网 发布:荣耀手环zero每天数据 编辑:程序博客网 时间:2024/05/16 10:08

传送门:1050


代码:

/************************************************* Author: Ac_sorry* File:* Create Date:* Motto: One heart One life* CSDN: http://blog.csdn.net/code_or_code*************************************************/#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<cstdlib>#include<vector>#include<string>#include<utility>#include<map>#include<set>#include<queue>#include<stack>#define INF 0x3f3f3f3f#define MOD 1000000007#define seed_ 131#define eps 1e-8#define mem(a,b) memset(a,b,sizeof a)#define w(i) tree[i].w#define ls(i) tree[i].ls#define rs(i) tree[i].rsusing namespace std;typedef long long LL;const int N=50010;struct node{    int l,r;}a[222];int vis[222];int cmp(node a,node b){    return a.l<b.l;}int main(){    int T;scanf("%d",&T);    while(T--)    {        mem(vis,0);        int n;scanf("%d",&n);        int l,r;        for(int i=0;i<n;i++)        {            scanf("%d%d",&l,&r);            if(r<l) swap(l,r);            a[i].l=(l%2?l:l-1);            a[i].r=(r%2?r+1:r);        }        sort(a,a+n,cmp);        int cnt=0,time=0;        int cr,flag;        while(cnt<n)        {            flag=0;            for(int i=0;i<n;i++) if(!vis[i])            {                if(!flag)                {                    flag=1;                    cr=a[i].r;                    vis[i]=1;                    cnt++;                }                else                {                    if(a[i].l>cr)                    {                        cr=a[i].r;                        vis[i]=1;                        cnt++;                    }                }            }            time++;        }        printf("%d\n",10*time);    }    return 0;}

传送门:1051


思路:主要是熟悉一下STL的链表,数组一样能模拟。

代码:

/************************************************* Author: Ac_sorry* File:* Create Date:* Motto: One heart One life* CSDN: http://blog.csdn.net/code_or_code*************************************************/#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<cstdlib>#include<vector>#include<string>#include<utility>#include<map>#include<set>#include<queue>#include<list>#include<stack>#define INF 0x3f3f3f3f#define MOD 1000000007#define seed_ 131#define eps 1e-8#define mem(a,b) memset(a,b,sizeof a)#define w(i) tree[i].w#define ls(i) tree[i].ls#define rs(i) tree[i].rsusing namespace std;typedef long long LL;const int N=5010;struct node{    int len,wei;    node(int x,int y):len(x),wei(y){}    bool operator<(const node t) const    {        return len<t.len;    }};int vis[222];list<node> li;bool cmp(node a,node b){    return a.len<b.len;}int main(){    int T;scanf("%d",&T);    while(T--)    {        mem(vis,0);        int n;scanf("%d",&n);        int l,w;        for(int i=0;i<n;i++)        {            scanf("%d%d",&l,&w);            li.push_back(node(l,w));        }        li.sort();        int time=0;        while(!li.empty())        {            //cout<<"---\n";            list<node>::iterator p=li.begin();            list<node>::iterator pre;            int clen=(*p).len,cwei=(*p).wei;            pre=p;            p++;time++;            li.erase(pre);            while(p!=li.end())            {                if((*p).len>=clen&&(*p).wei>=cwei)                {                    clen=(*p).len;                    cwei=(*p).wei;                    pre=p;                    p++;                    li.erase(pre);                }                else                    p++;            }            //cout<<time<<"--\n";        }        printf("%d\n",time);    }    return 0;}



0 0
原创粉丝点击