GH6 2022-08-17 21:18 采纳率: 50%
浏览 33
已结题

洛谷 P1248 怎么wa了?

#include<bits/stdc++.h>
using namespace std;
int n,ans[10000],ti[10000],a[10000],b[10000];
struct node{
int mi,wan;//mi:A和B中时间更短的,wan:序号
}hzy[10000];
inline int v(node x,node y){
return x.mi<y.mi;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
hzy[i].wan=i;
cin>>a[i];
}
for(int i = 1;i <= n;i++){
cin>>b[i];
hzy[i].mi=min(a[i],b[i]);
}
sort(hzy+1,hzy+1+n,v);

int z=0,y=n+1;
for(int i=1;i<=n;i++){
if(hzy[i].mi==a[hzy[i].wan]){//A时间短的往前面塞
z++;
ans[z]=hzy[i].wan;
}
else{//反之,B时间短的往后面塞
y--;
ans[y]=hzy[i].wan;
}
}
for(int i=1;i<=n;i++){
ti[i]=ti[i-1]+a[ans[i]];
}//轮到某一个零件时A车间的总加工时间
int sum=ti[1]+b[ans[1]];
for(int i=2;i<=n;i++){
sum=max(ti[i],sum)+b[ans[i]];
}//要等到A车间加工完:t[i],或等到B车间加工完:sum。再取其中最大值。
cout<<sum<<endl;
for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
return 0;
}

  • 写回答

1条回答 默认 最新

  • GH6 2022-08-18 09:10
    关注

    任务

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月26日
  • 已采纳回答 8月18日
  • 创建了问题 8月17日

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)