传送门

解题思路

贪心,首先因为\(n\)比较小,可以\(2^n\)枚举子集。然后判断的时候就每次看后面的如果用最大生产力生产能不能达成目标,解一个二次函数。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long using namespace std;
const int MAXN = 25;
typedef long long LL; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?0:1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return f?x:-x;
} int n,t[MAXN],g[MAXN],m[MAXN],cnt,mk[MAXN],ans;
int tmp[MAXN]; inline bool cmp(int x,int y){
return t[x]<t[y];
} int calc(int a,int b,int c){
double delta=b*b-4*a*c;
if(delta<0) return -1;
return floor((-b+sqrt(delta))/(a*2));
} inline bool check(){
for(int i=1;i<=cnt;i++) tmp[i]=mk[i];
sort(tmp+1,tmp+1+cnt,cmp);
int tt,now=1;LL sum=0,res=0;
for(int i=1;i<=cnt;i++){
sum=0;tt=t[tmp[i]]-t[tmp[i-1]];
for(int j=i;j<=cnt;j++){
sum+=g[tmp[j]];
if(sum>res)
tt=min(tt,calc(1,now-t[tmp[j]]+t[tmp[i-1]],
sum-res-now*(t[tmp[j]]-t[tmp[i-1]])));
}
if(tt<0) return false;
now+=tt;res+=(now*(t[tmp[i]]-t[tmp[i-1]]-tt)-g[tmp[i]]);
}
return true;
} void dfs(int x,LL sum){
if(x==n+1) {if(sum>ans) if(check()) ans=sum;return;}
mk[++cnt]=x;dfs(x+1,sum+m[x]);
cnt--;dfs(x+1,sum);
} signed main(){
// freopen("data.txt","r",stdin);
// freopen("B.txt","w",stdout);
n=rd();
for(int i=1;i<=n;i++) t[i]=rd(),g[i]=rd(),m[i]=rd();
dfs(1,0);cout<<ans;
return 0;
}

LUOGU P3161 [CQOI2012]模拟工厂 (贪心)的更多相关文章

  1. [BZOJ2667][cqoi2012]模拟工厂 贪心

    2667: [cqoi2012]模拟工厂 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 367  Solved: 184[Submit][Status] ...

  2. P3161 [CQOI2012]模拟工厂

    传送门 先枚举选择哪些订单,然后转为判定是否可行 在能完成的情况下肯定是花越多时间提高生产力越优 我们设可以有\(x\)单位时间来提高生产力,那么如果当前离下一个订单的时间为\(T\)时,这个订单要\ ...

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

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

  4. [BZOJ2667][cqoi2012]模拟工厂

    [BZOJ2667][cqoi2012]模拟工厂 试题描述 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时 ...

  5. 洛谷 题解 P3161 【[CQOI2012]模拟工厂】

    本蒟蒻又双叒叕被爆踩辣! 题目链接 Solution: 这题又是一道贪心.. 数据范围: n<=15 ti<=100,000 gi<=10^9 mi<=10^9 这里就可以看到 ...

  6. [BZOJ2667][cqoi2012][kcoj]模拟工厂

    题目描述 Description 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时刻时工厂的生产力加1:如果 ...

  7. Luogu 1090 合并果子(贪心,优先队列,STL运用)

    Luogu 1090 合并果子(贪心,优先队列,STL运用) Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每 ...

  8. Luogu 1970 NOIP2013 花匠 (贪心)

    Luogu 1970 NOIP2013 花匠 (贪心) Description 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使 ...

  9. luogu P5470 [NOI2019]序列 dp 贪心 费用流 模拟费用流

    LINK:序列 考虑前20分 容易想到爆搜. 考虑dp 容易设\(f_{i,j,k,l}\)表示前i个位置 选了j对 且此时A选择了k个 B选择了l个的最大值.期望得分28. code //#incl ...

随机推荐

  1. 软工-五月心得体会 PB16110698

    伴随着愈发红润的骄阳,火热而紧张刺激的五月悄然而至.这一个月以来,曾经让同学们“废寝忘食”的软工课大作业终于告一段落,每周一篇的读书笔记也缓到半月一篇,着实令人长吐一口气.但这一份表面的余裕当然没有看 ...

  2. Sql Server的内存策略

    最近碰到有人问我在使用sql server的时候,内存突然升高,但是没有log日志进行详细的调查,有没有什么解决办法. 在此我经过一番查询,发现了2种能够对内存进行一定优化限制的方法. 在数据库上点击 ...

  3. python_django_静态文件

    什么是静态文件? 是django中用于存放css,js,图片,json文件,字体文件等的文件,使代码更好管理. 1.配置 https://www.cnblogs.com/Vera-y/p/114923 ...

  4. php array remove empty values

    print_r(array_filter($linksArray)); 參考 Remove empty array elements Remove Empty Array Elements In PH ...

  5. Android中onTouch方法的执行过程以及和onClick执行发生冲突的解决办法

    $*********************************************************************************************$ 博主推荐 ...

  6. NX二次开发-UFUN拉伸函数UF_MODL_create_extruded2

    NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...

  7. NXOpenC#_Training_blockstyler(cn)【转载】

  8. 从yjz那里偷来的fread读入挂

    struct fastio{ char s[100005]; int it,len; fastio(){it=len=0;} inline char get(){ if(it<len)retur ...

  9. markdown常用数学符号小结

    (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 markdown使用LaTex输入数学公式类 Markdown数学符号&公式 CSDN-MarkDown编辑器使用手册(4)- ...

  10. Java--下大雪模拟

    package firstpack; import java.awt.*; public class MyStar { public static void main(String[] args) { ...