题目链接
很显然的贪心:在一段时间t里,如果你要选择x天进行提高产率,那么让产率最大化的方案显然是在t天里前x天进行提高产率,后面的时间进行生产。
如果当前有 v0 的生产能力,并且已经处理完了前 i-1 个任务,那么我们可以算出对于第 i~n 个任务,算出当前时间到该任务还有多长时间(令这个时间长度为 t),算出第 i 到该任务总共需要生产多少产品(令这个产品数为 a),那么设 x 为提高生产力所用的时间可以列出不等式 (x + v0)(t- x) ≥ a解得一个区间[li,ri]
取所有 ri 中最小的就是最优的方式(什么?!你问我证明?感性的理解吧)
展开这个方程,你会发现它是开口向下的一元二次方程。结合check的时候,有一个要求a,我们就得到了一个一元二次不等式。直接用求根公式解,别忘了判定Δ>=0。
代码:

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
typedef long long LL;
using namespace std;
const int N=20;
struct node{LL t,g,m;
}sa[N];
struct node2 {LL t,g,m;
}ss[N];LL len=0;
LL n;
bool cmp(node x,node y)
{return x.t<y.t;
}
LL downfloor(double x){return (LL)floor(x);}
LL ans=0;
LL get(LL v0,LL t,LL a)
{LL detra=(v0-t)*(v0-t)-4*(a-v0*t);if(detra<0) return -1LL;double x2=((double)(t-v0)+sqrt(detra))/2.0;return downfloor(x2);;
}
bool check(LL now)
{LL sum=0,v0=1,t,minr,SUM=0;for(LL i=1;i<=len;i++){minr=ss[i].t-ss[i-1].t;SUM=0;for(int j=i;j<=len;j++){SUM+=ss[j].g;t=ss[j].t-ss[i-1].t;if(SUM>sum) minr=min(minr,get(v0,t,SUM-sum));if(minr<0) return false;}if(minr<0) return false;v0+=minr;sum+=((ss[i].t-ss[i-1].t-minr)*v0-ss[i].g);}return true;
}
void dfs(LL x,LL sum)
{   //printf("%lld %lld %lld\n",x,sum,len);
//system("pause");if(x==n+1) {if(check(sum)) {ans=max(ans,sum);}return;}ss[++len].t=sa[x].t;ss[len].g=sa[x].g;ss[len].m=sa[x].m;dfs(x+1,sum+sa[x].m);len--;dfs(x+1,sum);
}
int main()
{scanf("%lld",&n);for(LL i=1;i<=n;i++)scanf("%lld%lld%lld",&sa[i].t,&sa[i].g,&sa[i].m);sort(sa+1,sa+1+n,cmp);ss[0].t=0;dfs(1,0);printf("%lld\n",ans);
}

2667: [cqoi2012]模拟工厂相关推荐

  1. [CQOI2012]模拟工厂 题解(搜索+贪心)

    [CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...

  2. 虚拟实验工场大学计算机报告,模拟工厂实习报告

    模拟工厂实习报告 (15页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 模拟工厂实习模拟工厂实习 实验报告实验报告实验步骤:实验步骤:一 ...

  3. 抽象工厂模式(Absraact Factory)介绍与实现

    创建一个IProduct,后面模拟业务时要用到 package com.xiawei.factory; public class IProduct { private String productNo ...

  4. 工厂供电综合自动化实验QY-PGD11

    1. 供电和自动化控制对工厂发展的作用: (1).减少劳动强度,降低生产成本 (2).缩短生产周期,提高产品的成品率和使用可靠性 (3).提升企业生产规模 (4).为企业的信息化.网络化管理打下基础 ...

  5. 强化学习开源模拟环境大盘点

    游戏环境 OpenAI Gym Retro OpenAI 发布的增强的游戏强化学习研究平台,Gym Retro.其中包括对任天堂 Game boy,NES, 世嘉游戏等各种模拟器的支持.通过附带的 I ...

  6. TML5/CSS3工厂流水线动画特效

    今天我们来分享一款非常具有创意的HTML5/CSS3动画特效,它是一个模拟工厂流水线的动画,烟囱冒着黑烟,屋外的传送带把货物送出去,虽然这个HTML5动画不怎么实用,但还是能很大程度上帮助我们学习HT ...

  7. Java多线程模拟加工厂加工玩具

    创建工厂类, 属性包括:车间类的对象的集合,仓库容量 方法包括: 1. 加工玩具的方法(product),方法的功能是各个车间同时工作.根据仓库容量平均分配给各个车间需要加工玩具的数量.2. 建造玩具 ...

  8. Java 依赖注入标准(JSR-330)简介

    Java 依赖注入标准(JSR-330)简介 转载请保留作者信息: 作者:88250 ,Vanessa 时间:2009 年 11 月 19 日 Java 依赖注入标准(JSR-330,Dependen ...

  9. aspen plus大小_AspenPlus

    依靠基于超过35年经验和顶级化工公司反馈的过程模拟器.访问过程仿真中的最新创新. 软件优势 1.更好的仿真简化了工程 改善工厂绩效的基础是工厂设计和运营的准确表示.公司需要一种解决方案,使他们能够对流 ...

最新文章

  1. 每个程序员都需要学习 JavaScript 的7个理由
  2. 架构设计的本质:系统与子系统、模块与组件、框架与架构
  3. 记录一下vlfeat视觉库配置
  4. 46岁谷歌创始人佩奇、布林双双卸任,皮查伊接任母公司CEO
  5. 2022.2.22显示器连接器引脚信号定义2
  6. linux找不到动态链接库 .so文件的解决方法
  7. spring boot 入门_玩转springboot2.x之快速入门开山篇
  8. IEPNGFix:Unclickable children of element 解决办法
  9. Cordova+Ionic之坑
  10. python如何访问对象的属性_Python:从存储在字典中的对象访问对象属性
  11. shell 执行脚本
  12. Exec l 中分列的作用
  13. android studio拟器,十二、安装Android Studio 模拟器
  14. linux下分析prn文件,Linux文件的管理
  15. SI9000差分阻抗计算示例
  16. 抖音壁纸小程序怎么做?教你开通和对接流量主拥有自己的小程序
  17. html js更新数据不刷新页面,用javascript实现无刷新更新数据
  18. A股-入门-融资融券介绍及操作技巧
  19. dlink网络打印服务器如何修改ip地址,DLINK路由器如何更改登陆IP地址
  20. 【Microsoft Office】无法在所选的更新通道上安装此产品

热门文章

  1. 【机房】实时错误 2147217873不能将值NULL插入列
  2. Python中matplotlib.pyplot工具包总结
  3. 抖音怎么变现赚钱?揭秘抖音拍短视频月入10万+
  4. 【面试篇】- 线程和协程的区别是什么?
  5. Oracle Execution Plan -- Operation
  6. 十八、Express框架连接MySQL数据库操作
  7. 我叔叔愿意从事计算机工作英语翻译,我的叔叔作文450字
  8. python + vue + electron实现本地音乐播放器
  9. ccboot最新服务器配置,CCBoot热备无盘系统—能实现服务器持续运行的无盘系统
  10. 巧用Excel创建几百万条Loadrunner参数化数据