21.11.24模拟 乾坤/1248加工生产调度

先加工1,再加工2
t1=a1+max(b1,a2)+b2;

先加工2,再加工1
t2=a2+max(b2,a1)+b1;

假设t1<t2

于是有
max(b1,a2)-a2-b1<max(b2,a1)-a1-b2
-min(b1,a2)<-min(a1,b2)
min(b1,a2)>min(a1,b2)

但是这个好像有问题。。

我们还是用这个
我们设d=sign(a-b)

d=-1 a<b
d=0 随便
d=1 a>b

这样排序就好了,但是也不是很懂。。
还是用第一个吧,好像没问题


const int N = 1e5 + 79;
struct data {
	int a, b;
	bool operator <(const data &rhs)const {
		return min(a, rhs.b) < min(rhs.a, b);
	}
} p[N];
int n;
int main() {
	freopen("universe.in","r",stdin);
	freopen("universe.out","w",stdout);
	read(n);
	rep(i, 1, n) {
		read(p[i].a);
		read(p[i].b);
	}
	std::sort(p + 1, p + n + 1);

	int ta(0), tb(0);
	rep(i, 1, n) {
		ta += p[i].a;
		tb = max(ta, tb) + p[i].b;
	}
	out(tb, '
');
	return 0;
}

本文来自博客园,作者:{2519},转载请注明原文链接:https://www.cnblogs.com/QQ2519/p/15398767.html

原文地址:https://www.cnblogs.com/QQ2519/p/15398767.html