您的位置:首页 > 其它

HDU_1050 1051 [贪心]_水

2014-12-23 11:07 267 查看
传送门: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].rs
using 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].rs
using 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: