[luogu1248] 加工生产调度 题解

考虑 \(i\) 排在 \(j\) 前的条件是 \(a_i+\max(a_j,b_i)+b_j\le a_j+\max(a_i,b_j)+b_i\),然后发现这一坨东西是皇后游戏中的倒数第三个式子,直接转化为 \(\min(a_j,b_i)\ge\min(a_i,b_j)\),然后就按皇后游戏中的排序方法就可以了……

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
struct hand{
	int a,b,id;
}peo[1005];
int d(hand x){
	if(x.a==x.b) return 0;
	return ((x.a>x.b)?1:-1);
}int cmp(hand x,hand y){
	if(d(x)!=d(y)) return d(x)<d(y);
	if(d(x)>0) return x.b>y.b;
	return x.a<y.a;
}signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>peo[i].a;
	for(int i=1;i<=n;i++)
		cin>>peo[i].b,peo[i].id=i;
	sort(peo+1,peo+n+1,cmp);
	int s=0,c=0;
	for(int i=1;i<=n;i++){
		s+=peo[i].a;
		c=max(c,s)+peo[i].b;
	}cout<<c<<"\n";
	for(int i=1;i<=n;i++)
		cout<<peo[i].id<<" ";
	return 0;
} 
posted @   长安一片月_22  阅读(10)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示