题目:http://acm.hdu.edu.cn/showproblem.php?pid=1050
题意:搬桌子从a到b,最多要多久。
这题目不难就是看不懂英文被坑了一下。
比如8间房子为例:
1 3 5 7
2 4 6 8
房间的排列如上。如果从1搬到5,6搬到7.需要20分钟。因为他们面对面会堵着- -MMP。所以其实就是当a为偶数就--,b为奇数就++。然后按照贪心就可以了。
#include<bits/stdc++.h>
#define INF 1e18
#define inf 1e9
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define IOS ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;
const ll _max = 405;
struct node{
int num;
bool cnt;
};
node n[_max];
bool cmp(node n1,node n2){
if(n1.num == n2.num)
return !n1.cnt;
else
return n1.num<n2.num;
}
int main(){
IOS;
int T;
cin>>T;
while(T--){
int N;
cin >> N;
for(int i = 1 ; i <= N ; i++){
cin>>n[i].num>>n[i+N].num;
n[i].cnt = true;
n[i+N].cnt = false;
if(n[i].num > n[i+N].num)
swap(n[i].num,n[i+N].num);
if(n[i].num%2==0) n[i].num--;
if(n[i+N].num%2==1) n[i+N].num++;
// cout<<n[i].num<<" "<<n[i+N].num<<endl;
}
sort(n+1,n+1+2*N,cmp);
int ans = 0;
int cnt = 0;
for(int i = 1 ; i <= N*2 ; i++){
if(n[i].cnt)
cnt++;
else cnt--;
ans = max(cnt,ans);
}
cout<<ans*10<<endl;
}
return 0;
}