华不注 2022-04-27 09:51 采纳率: 91.7%
浏览 37
已结题

洛谷 2392 考前临时抱佛脚 求纠错

题目给的测试点过了,但是提交后有问题,十个测试点都是WC

img

#include<bits/stdc++.h>
using namespace std;

bool cmp(int x,int y){
return x>y;
}
int main(){
int s[5];
int sum=0;
for(int i=1;i<=4;i++)
cin>>s[i];
for(int i=1;i<=4;i++){ //当复习第i科时
int a[s[i]+5];
for(int j=1;j<=s[i];j++)
cin>>a[j]; //输入s道题目需要的时间
sort(a,a+s[i],cmp); //对s道题目按升序排序,降序也可以
int l=0;
int r=0;
for(int j=1;j<=s[i];j++){
if(j/2) l+=a[j]; //如果是第奇数个题,放到左脑
if(j/2==0) r+=a[j]; //如果是第偶数个题,放到右脑
//if(l<=r) l+=a[j];
//else r+=a[j];
}
sum+=max(l,r);
}
cout<<sum;
}

  • 写回答

1条回答 默认 最新

  • 对象被抛出 2022-04-27 15:47
    关注

    并不是说简单的排个序, 然后交替分配给左右脑就完事的. 你要让每次左右脑处理的时长的差尽可能小.
    举个例子, 假设排完序后时间分别是1, 10, 11, 100. 你一上来1给左脑, 10给右脑, 11给左脑, 100给右脑, 花的时间就是110, 但是如果把1和100给左脑, 10和11给右脑, 花的时间就是101.
    所里每碰到新的题需要耗费s, 假设此时左脑总共还有l, 右脑有r, 如果l<r, 那么就分配给左脑, 反之右脑.

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

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 4月27日

悬赏问题

  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?