LA 4850 贪心

感谢SF巨和WH巨的指导。。

首先,YY得到一个结论,罚值最大的最小值必定是按照截止时间排序得到的。然后,选一个任务插到其他位置,必定产生罚值最大值更大的情况,但有可能产生两个罚值最大情况和更小的情况(此处感谢WH巨)。然而,为什么不是选两个任务调动呢?因为必定会产生两个罚值更大的情况,情况会更坏。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=505;

struct mis{
	int s,t;
}mission[N];

bool cmp(mis a,mis b){
	if(a.t<b.t) return true;
	else if(a.t==b.t){
		if(a.s<b.s) return true;
	}
	return false;
}

int gao(int cur,int to,int n){
	int sum=0,cnt=0;
	int max1=0,max2=0;
	for(int i=0;i<=n;i++){
		if(cnt==to){
			sum+=mission[cur].s;
			max2=max(max2,sum-mission[cur].t);
			if(max2>max1) swap(max1,max2);
		//	cnt++;
		}
		if(i!=cur&&i!=n){
			sum+=mission[i].s;
			max2=max(max2,sum-mission[i].t);
			if(max2>max1) swap(max1,max2);
			cnt++;
		}
	}
	return max1+max2;
}

int main(){
	int T,n;
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		for(int i=0;i<n;i++){
			scanf("%d%d",&mission[i].s,&mission[i].t);
		}
		sort(mission,mission+n,cmp);
		int ans=gao(-1,10000,n);
	//	cout<<ans<<endl;
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				ans=min(ans,gao(i,j,n));
			//	cout<<ans<<endl;
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}

  

时间: 2024-10-04 18:20:01

LA 4850 贪心的相关文章

LA 3266 (贪心) Tian Ji -- The Horse Racing

题意: 田忌和齐王各有n匹马,如果马的速度比齐王的快就赢200,慢则输200,相等不赔不赚. 已知两人每匹马的速度(为整数)和齐王所排出的马的顺序,问田忌该如何应对才能使收益最大. 分析: 本以为是一道很简单的贪心,上来就贪,结果什么都没贪出来. 看了题解才发现贪心是比较复杂的. 这里贴上poj某牛的神分析. 贪心策略: 1,如果田忌的最快马快于齐王的最快马,则两者比. (因为若是田忌的别的马很可能就赢不了了,所以两者比) 2,如果田忌的最快马慢于齐王的最快马,则用田忌的最慢马和齐王的最快马比.

LA 4636 (贪心) Cubist Artwok

题意: 一个由若干小正方体组成的图形,给出它的正视图和侧视图,求满足条件的最少小正方体的个数. 分析: 虽说是一道简单的贪心,可一直没有太好的思路. 又一次可耻地看了别人的题解. http://blog.csdn.net/u011345461/article/details/38491661 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 5 const int maxn = 25; 6

LA 4254 贪心

题意:有 n 个工作,他的允许的工作时间是 [l,r] ,工作量是 v ,求CPU最速度的最小值. 分析: 可能太久没有做题了,竟然脑子反应好慢的.还是很容易想到二分,但是二分怎么转移呢? 可以看出,[l,r] 的区间范围不大,可以枚举,cpu 此时的二分答案 x,尽可能的贪心,怎么贪心呢,在同一速度情况下,是最先结束的优先. 而且,这一时刻,他能做很多任务,当 x 很大时,就在这里用优先队列来贪心安排任务. 其实这个题目中的那个图还是有干扰的,因为时时刻刻都要CPU速度为x. #include

安装服务 LA 4850

题目大意 工程师需要安装n个服务,其中的第i个服务Ji需要Si个单位的时间,截止时间为Di,如果在截止时间之前完成任务不会收到惩罚,如果超时惩罚时间时Ci-di意思就是超时多少惩罚值就越大,从t=0时刻开始,找到两个惩罚值之和最小的任务. 分析 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namesp

2015 暑假

2015.07.19 1 //2015.07.19 2 3 **********做的题目*********** 4 LA 4254 5 二分最小化最大值,check函数不好写---,是一秒一秒地来处理的 6 7 UVa 11627 8 二分,写check函数的时候,用到了一点点物理的平抛,求出下落的区间的范围,再判断是否可行 9 10 UVa 11134 11 贪心,优先队列, 12 行列无关,转化为对于[1,n]中的每一个数,判断i是否在区间[l,r]里面 13 然后贪心地选择包含i点的右端点

LA 4945 Free Goodies(贪心)

Description B  Free Goodies Petra and Jan have just received a box full of free goodies, and want to divide the goodies between them. However, it is not easy to do this fairly, since they both value different goodies differently. To divide the goodie

UVA LA 7146 2014上海亚洲赛(贪心)

https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=648&problem=5158&mosmsg=Submission+received+with+ID+1708713 /** UVA LA 7146 2014上海亚洲赛(贪心) 题目大意:给定敌我双方士兵的数量和每个士兵的攻击力和防守力,如果两个士兵对战,一方

LA 3266 Tian Ji -- The Horse Racing 田忌赛马 【贪心】

题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33702 贪心: 1,如果田忌的最快马快于齐王的最快马,则两者比. (因为若是田忌的别的马很可能就赢不了了,所以两者比) 2,如果田忌的最快马慢于齐王的最快马,则用田忌的最慢马和齐王的最快马比. (由于所有的马都赢不了齐王的最快马,所以用损失最小的,拿最慢的和他比) 3,若相等,则比较田忌的最慢马和齐王的最慢马 3.1,若田忌最慢马快于齐王最慢马,两者比. (田忌

LA 4254 Processor 处理器 【二分 贪心 优先队列】

题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21663 二分: 最大值最小的问题通过二分来求解.对处理器速度进行二分之后,问题就转化成了对于给定的处理速度,问处理器是否可以将这些问题处理完. 贪心: 一个贪心的思路就是每个时刻应该尽量 做可以做的任务中,结束时间最早的那个,这样最起码不会使结果更糟.这样就可以枚举每个单位时间,然后去找可以做的并且结束时间最早的那个去做,直到用完这一单位时间或者无任务可做为止.