感谢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;
}

  

最新文章

  1. ExtJS 4.2 介绍
  2. LVS负载平衡集群(没成型)
  3. jQuery Wheel Menu:实现漂亮的 Path 风格旋转菜单
  4. ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用
  5. CocoStudio基础教程(4)骨骼动画的动态换肤
  6. 查看现有运行的linux服务器有多少内存条
  7. android JNI调用(转)
  8. Spring EL method invocation example
  9. activemq 异步和同步接收
  10. copy,retain,assign,strong,weak的区别
  11. oracle-行转列
  12. soapUI参数中文乱码问题解决方法 (groovy脚本中文乱码)
  13. uvalive 6888 Ricochet Robots bfs
  14. C 文件直接包含
  15. AVL树的插入与删除
  16. 位运算 leecode.389. 找不同
  17. python学习笔记之线程、进程和协程(第八天)
  18. weblogic安装错误记录
  19. Servlet(API)生命周期
  20. JavaFX

热门文章

  1. Spring中常用的注解,你知道几个呢?
  2. 我的周记1——”云想衣裳花想容&quot;
  3. RabbitMQ死循环-延长ACK时间
  4. [转]Linux 正则表达式详解
  5. C#图片辅助类,形成缩略图
  6. the interview questions of sql server
  7. 软件架构自学笔记-- 转载“虎牙在全球 DNS 秒级生效上的实践”
  8. Mac下CUDA开启及Tensorflow-gpu 1.4 安装
  9. 【PostgreSQL-9.6.3】触发器实例
  10. 【PL/SQL】触发器示例:记录加薪