P3161 [CQOI2012]模拟工厂
先枚举选择哪些订单,然后转为判定是否可行
在能完成的情况下肯定是花越多时间提高生产力越优
我们设可以有\(x\)单位时间来提高生产力,那么如果当前离下一个订单的时间为\(T\)时,这个订单要\(P\)个产品,工厂拥有\(M\)的生产力时,显然有如下方程:
\]
整理之后得
\]
判断是否有解即可
//minamoto
#include<bits/stdc++.h>
#define ll long long
#define R register
#define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
#define go(u) for(R int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
inline int min(const R int &x,const R int &y){return x<y?x:y;}
inline int max(const R ll &x,const R ll &y){return x>y?x:y;}
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){
    R int res,f=1;R char ch;
    while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);
    for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');
    return res*f;
}
const int N=35;
struct node{
	int t,g,m;
	friend bool operator <(const R node &a,const R node &b){return a.t<b.t;}
}a[N],st[N];int top;
int n,t;ll ans,pp,gg,ss,res;
int calc(R ll k,R ll t,R ll g){
	ll a=1,b=k-t,c=g-k*t,del=b*b-4*a*c;
	return del<0?-1:((-b+sqrt(del))/2/a);
}
bool ck(){
	pp=1,gg=0;
	fp(i,1,top){
		ss=0,t=st[i].t-st[i-1].t;
		fp(j,i,top)if((ss+=st[j].g)>gg)t=min(t,calc(pp,st[j].t-st[i-1].t,ss-gg));
		if(t<0)return 0;
		pp+=t,gg+=pp*(st[i].t-st[i-1].t-t),gg-=st[i].g;
	}return 1;
}
int main(){
//	freopen("testdata.in","r",stdin);
	n=read();fp(i,1,n)a[i].t=read(),a[i].g=read(),a[i].m=read();
	sort(a+1,a+1+n);
	fp(i,1,(1<<n)-1){
		res=top=0;
		fp(j,1,n)if(i&(1<<(j-1)))st[++top]=a[j],res+=a[j].m;
		if(ck())ans=max(ans,res);
	}printf("%lld\n",ans);return 0;
}
												
											P3161 [CQOI2012]模拟工厂的更多相关文章
- LUOGU  P3161 [CQOI2012]模拟工厂 (贪心)
		
传送门 解题思路 贪心,首先因为\(n\)比较小,可以\(2^n\)枚举子集.然后判断的时候就每次看后面的如果用最大生产力生产能不能达成目标,解一个二次函数. 代码 #include<iostr ...
 - [CQOI2012]模拟工厂 题解(搜索+贪心)
		
[CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...
 - [BZOJ2667][cqoi2012]模拟工厂 贪心
		
2667: [cqoi2012]模拟工厂 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 367 Solved: 184[Submit][Status] ...
 - [BZOJ2667][cqoi2012]模拟工厂
		
[BZOJ2667][cqoi2012]模拟工厂 试题描述 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时 ...
 - 洛谷 题解 P3161 【[CQOI2012]模拟工厂】
		
本蒟蒻又双叒叕被爆踩辣! 题目链接 Solution: 这题又是一道贪心.. 数据范围: n<=15 ti<=100,000 gi<=10^9 mi<=10^9 这里就可以看到 ...
 - [BZOJ2667][cqoi2012][kcoj]模拟工厂
		
题目描述 Description 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时刻时工厂的生产力加1:如果 ...
 - 贪心(qwq)习题题解
		
贪心(qwq)习题题解 SCOI 题解 [ SCOI2016 美味 ] 假设已经确定了前i位,那么答案ans一定属于一个区间. 从高位往低位贪心,每次区间查找是否存在使此位答案为1的值. 比如6位数确 ...
 - bzoj AC倒序
		
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
 - python mock基本使用
		
什么是mock? mock在翻译过来有模拟的意思.这里要介绍的mock是辅助单元测试的一个模块.它允许您用模拟对象替换您的系统的部分,并对它们已使用的方式进行断言. 在Python2.x 中 mock ...
 
随机推荐
- [Bzoj4182]Shopping(点分治)(树上背包)(单调队列优化多重背包)
			
4182: Shopping Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 374 Solved: 130[Submit][Status][Disc ...
 - 2018.11.5 PION模拟赛
			
期望:30 + 40 + 50 = 120 实际:30 + 50 + 40 = 120 ‘’ 思路:最重要的是发现 是完全没有用的,然后这个题目就可以转成DP来做. /* 期望的分:30 */ #in ...
 - java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称而且未指定默认驱动程序解决方法
			
开发程序须要登录功能 .就不想用大数据库.直接用java连接access. 在自己机器上一切正常, url直连 和配置数据源都没有问题. 公布到windows server2008 上 , ...
 - chapter1:using neural nets to recognize handwritten digits
			
two important types of artificial neuron :the perceptron and the sigmoid neuron Perceptrons 感知机的输入个数 ...
 - 【python】Python的字典get方法:从字典中获取一个值
			
转自: http://blog.sina.com.cn/s/blog_6be89284010183xm.html
 - jquery 动态添加,降低input表单的方法
			
html代码例如以下 <html> <tr><button style="margin-left:10px" class="add_fiel ...
 - 单点登录cas常见问题(二) - 子系统是否会频繁訪问cas中心?
			
这个问题的完整描写叙述是:用户成功登陆后.在訪问子系统的受限资源时,还须要訪问cas中心么,即子系统是否还会频繁訪问cas中心.cas中心会不会压力太大? 答案是:不会. 假设用户通过子系统A登录了c ...
 - redux-saga 异步流
			
前言 React的作用View层次的前端框架,自然少不了很多中间件(Redux Middleware)做数据处理, 而redux-saga就是其中之一,目前这个中间件在网上的资料还是比较少,估计应用的 ...
 - 分享一个非常屌的eazyui二开demo
			
eazyui二开Demo非常吊,里面各种非常吊的样例,最喜欢的是 多文件进度条上传,一次可多选,还有流程,还有文本编辑器 非常简洁的 不像一些官网各种复杂的东西.主要为自己保留一份, 在线demo在 ...
 - Jenkins系列之-—01 简介&新建任务
			
一.Jenkins 简介 Jenkins是一个可扩展的持续集成引擎. 主要用于: l 持续.自动地构建/测试软件项目.l 监控一些定时执行的任务. Jenkins拥有的特性包括: l 易于安装-只要把 ...