HDU 3552 I can do it!(贪心)

xiaoxiao2021-02-27  185

我能行!

时间限制:2000/2000 MS(Java / Others)内存限制:65535/32768 K(Java / Others) 总提交:1274接受的提交:610 问题描述 给定n个元素,其具有两个属性,称为属性A和属性B.为方便起见,我们使用两个整数A  i和B  i来测量这两个属性。 你的任务是将元素分成两组,比如说Set A和Set B,最小化max  (x∈SetA) {A  x } + max  (y∈SetB) {B  y }的值。 有关详细信息,请参阅样本测试用例。   输入 有多个测试用例,第一行输入包含表示测试用例数的整数。 对于每个测试用例,第一行包含整数N,表示元素的数量。(1 <= N <= 100000) 对于接下来的N行,每行包含两个整数A  i和B  i表示第i个元素的属性A和属性B. (0 <= A  i,B  i <= 1000000000)   产量 对于每个测试用例,输出最小值。   样品输入 1 3 1 100 2 100 3 1   样品输出 案例1:3 //当一个集合中所需最大值确定的时候,小于等于这个值的都应该放进来,肯定不会使结果更差 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; const int mn=100000+10; struct node{ int a,b; bool operator<(node t)const { return a>t.a; } }s[mn]; int main(){ ios::sync_with_stdio(0); int T,n; cin>>T; for(int e=1;e<=T;e++) { cin>>n; for(int i=0;i<n;i++) cin>>s[i].a>>s[i].b; sort(s,s+n); int ans=0x3f3f3f3f,B=0; for(int i=0;i<n-1;i++) { B=max(B,s[i].b); ans=min(s[i+1].a+B,ans); } cout<<"Case "<<e<<": "<<ans<<endl; } return 0; }

我能行!

时间限制:2000/2000 MS(Java / Others)内存限制:65535/32768 K(Java / Others) 总提交:1274接受的提交:610 问题描述 给定n个元素,其具有两个属性,称为属性A和属性B.为方便起见,我们使用两个整数A  i和B  i来测量这两个属性。 你的任务是将元素分成两组,比如说Set A和Set B,最小化max  (x∈SetA) {A  x } + max  (y∈SetB) {B  y }的值。 有关详细信息,请参阅样本测试用例。   输入 有多个测试用例,第一行输入包含表示测试用例数的整数。 对于每个测试用例,第一行包含整数N,表示元素的数量。(1 <= N <= 100000) 对于接下来的N行,每行包含两个整数A  i和B  i表示第i个元素的属性A和属性B. (0 <= A  i,B  i <= 1000000000)   产量 对于每个测试用例,输出最小值。   样品输入 1 3 1 100 2 100 3 1   样品输出 案例1:3
转载请注明原文地址: https://www.6miu.com/read-14157.html

最新回复(0)