[BZOJ2667][cqoi2012]模拟工厂 贪心
2667: [cqoi2012]模拟工厂
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 367 Solved: 184
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
5 1 8
7 15 3
Sample Output
HINT
|
编号 |
1-3 |
4-6 |
7-10 |
|
n |
<=5 |
<=10 |
<=15 |
|
ti |
100 |
100 |
<=100,000 |
|
gi |
10,000 |
10,000 |
<=109 |
|
mi |
10,000 |
10,000 |
<=109 |
Source
考虑贪心,显然每一段先加生产力再生产。
枚举订单后n*n check。
check时我们设当前工作力为g,天数为t,现在剩余a
则得方程(g+x)(t-x)>=a+需求。可解出能够增加生产力的天数。
联立方程,可得若干个区间[l,r]。显然取最小的r作为增加生产力的天数。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
ll n;
struct data {
ll tim,g,m;
bool operator <(const data tmp)const {
return tim<tmp.tim;
}
}t[];
int q[],tot;
ll gets(ll a,ll b,ll c) {
ll de=b*b-*a*c;if(de<) return -;
double d=sqrt(de);
double x1=(-b-d)/(2.0*a),x2=(-b+d)/(2.0*a);
return max((ll)floor(x1),(ll)floor(x2));
}
ll ans=;
void solve(int x) {
ll sum=;tot=;
for(int i=;i<=n;i++) if((<<(i-))&x) q[++tot]=i;
ll s=,g=;
for(int i=;i<=tot;i++) {
ll tmp=2147483647ll,now=;
for(int j=i;j<=tot;j++) {
now+=t[q[j]].g;
ll b=t[q[j]].tim-t[q[i-]].tim;
tmp=min(tmp,gets(-,b-g,b*g+s-now));
if(tmp<) {sum=;return;}
}
g+=tmp;s+=g*(t[q[i]].tim-t[q[i-]].tim-tmp);sum+=t[q[i]].m;s-=t[q[i]].g;
}
ans=max(ans,sum);
}
int main() {
scanf("%lld",&n);
for(int i=;i<=n;i++) scanf("%lld%lld%lld",&t[i].tim,&t[i].g,&t[i].m);
sort(t+,t+n+);
for(int i=;i<=(<<n)-;i++) solve(i);
printf("%lld",ans);
}
[BZOJ2667][cqoi2012]模拟工厂 贪心的更多相关文章
- [BZOJ2667][cqoi2012]模拟工厂
[BZOJ2667][cqoi2012]模拟工厂 试题描述 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时 ...
- LUOGU P3161 [CQOI2012]模拟工厂 (贪心)
传送门 解题思路 贪心,首先因为\(n\)比较小,可以\(2^n\)枚举子集.然后判断的时候就每次看后面的如果用最大生产力生产能不能达成目标,解一个二次函数. 代码 #include<iostr ...
- [CQOI2012]模拟工厂 题解(搜索+贪心)
[CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...
- P3161 [CQOI2012]模拟工厂
传送门 先枚举选择哪些订单,然后转为判定是否可行 在能完成的情况下肯定是花越多时间提高生产力越优 我们设可以有\(x\)单位时间来提高生产力,那么如果当前离下一个订单的时间为\(T\)时,这个订单要\ ...
- 洛谷 题解 P3161 【[CQOI2012]模拟工厂】
本蒟蒻又双叒叕被爆踩辣! 题目链接 Solution: 这题又是一道贪心.. 数据范围: n<=15 ti<=100,000 gi<=10^9 mi<=10^9 这里就可以看到 ...
- [BZOJ2667][cqoi2012][kcoj]模拟工厂
题目描述 Description 有一个称为“模拟工厂”的游戏是这样的:在时刻0,工厂的生产力等于1.在每个时刻,你可以提高生产力或者生产商品.如果选择提高生产力,在下一个时刻时工厂的生产力加1:如果 ...
- POJ 1696 Space Ant --枚举,模拟,贪心,几何
题意: 有很多点,从最右下角的点开始走起,初始方向水平向右,然后以后每步只能向左边走,问最多能走多少个点. 解法: 贪心的搞的话,肯定每次选左边的与它夹角最小的点,然后走过去. 然后就是相当于模拟地去 ...
- [CQOI2012]组装 (贪心)
CQOI2012]组装 solution: 蒟蒻表示并不会模拟退火,所以用了差分数组加贪心吗.我们先来看题: 在数轴上的某个位置修建一个组装车间 到组装车间距离的平方的最小值. 1<=n< ...
- CodeForces 342B Xenia and Spies (水题模拟,贪心)
题意:给定 n 个间谍,m个区间,一个 s,一个f,然后从 s开始传纸条,然后传到 f,然后在每个 t 时间在区间内的不能传,问你最少的时间传过去. 析:这个题,就模拟一下就好,贪心策略,能传就传,找 ...
随机推荐
- 【WebService】——入门实例
服务端 服务: 1.add(int a,int b) 2.minus(int a,int b) 具体如下: <pre name="code" class="java ...
- JS实现双击编辑可修改
需求描述:在一段文字处双击可以进行修改,也就是双击后创建输入框,输入内容,在输入框失去焦点后将输入的内容再以文字的形式显示出来,以下是html代码: 1 <fieldset> 2 < ...
- web颜色转换为delphi
今天在写写一个日志浏览和报警功能时,要求用多种颜色去显示不同的信息,客户给出的颜色是web的 rgb颜色,就是用6位16进制数去表示的颜色,直接把他赋值给Delphi的TColor变量,发现显示的颜色 ...
- BZOJ2001 [Hnoi2010]City 城市建设 【CDQ分治 + kruskal】
题目链接 BZOJ2001 题解 CDQ分治神题... 难想难写.. 比较朴素的思想是对于每个询问都求一遍\(BST\),这样做显然会爆 考虑一下时间都浪费在了什么地方 我们每次求\(BST\)实际上 ...
- BZOJ3648 寝室管理 【点分治 + 环套树】
3648: 寝室管理 Time Limit: 40 Sec Memory Limit: 512 MB Submit: 366 Solved: 152 [Submit][Status][Discus ...
- BZOJ 1098: [POI2007]办公楼biu 链表
求补图连通块,用链表优化,势能O(n+m) #include<cstdio> #include<cstring> #include<iostream> #inclu ...
- bzoj3343: 教主的魔法 分块 标记
修改:两边暴力重构,中间打标记.复杂度:O(n0.5) 查询:中间二分两边暴力.O(n0.5logn0.5) 总时间复杂度O(n*n0.5logn0.5) 空间复杂度是n级别的 标记不用下传因为标记不 ...
- Angular白名单&&Angular拦截器 全局通用
//angular 白名单全局通用 app.config([ '$compileProvider', function ($compileProvider) { $compileProvider.aH ...
- windows远程桌面访问ubuntu12.04
转载自 : http://blog.csdn.net/shuzui1985/article/details/7592569 1.dashboard----桌面共享 我们共享所使用的协议是rdp,所以我 ...
- (转)什么是JSON+如何处理JSON字符串
仍然是crifan的好文: http://www.crifan.com/summary_what_is_json_and_how_to_process_json_string/ . . . .