HDOJ 1050 贪心

题目: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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值