传送门:1050
代码:
/************************************************
* Author: Ac_sorry
* File:
* Create Date:
* Motto: One heart One life
* 优快云: http://blog.youkuaiyun.com/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
* 优快云: http://blog.youkuaiyun.com/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;
}