Given n elements, which have two properties, say Property A and Property B. For convenience, we use two integers Ai
and Bi
to measure the two properties.
Your task is, to partition the element into two sets, say Set A and Set B , which minimizes the value of max(x∈Set
A) {Ax}+max(y∈Set
B) {By}.
See sample test cases for further details.
For each test cases, output the minimum value.
Case 1: 3
题意:找出一个最大的和最小,
思路:先排序,然后枚举即可,,
AC代码:
#include<iostream>
#include<string.h>
#include<cstdio>
#include<memory.h>
#include<algorithm>
#include<vector>
#define N 100005
using namespace std;
typedef struct node
{
__int64 x;
__int64 y;
}Node;
Node s1[N];
bool cmp2(Node xx,Node yy)
{
return xx.y>yy.y;
}
int main()
{
int T;
scanf("%d",&T);
for(int k=1;k<=T;++k)
{
int n;
scanf("%d",&n);
for(int i=0;i<n;++i)
scanf("%I64d%I64d",&s1[i].x,&s1[i].y);
sort(s1,s1+n,cmp2);
__int64 minx=s1[0].y;
__int64 p=-1;
for(int i=1;i<n;++i)
{
if(s1[i-1].x>p) p=s1[i-1].x;
s1[i].y+=p;
if(s1[i].y<minx) minx=s1[i].y;
}printf("Case %d: %I64d\n",k,minx);
}return 0;
}
基本信息
#: 7214
题目: 1198
提交人: pursuit
语言: G++
提交时间 2012-07-14 09:34:28