[bzoj1569][JSOI2008][Blue Mary的职员分配]
2024-08-24 19:41:41
Description
由于Blue Mary呕心沥血的管理,Blue Mary的网络公司蒸蒸日上。现在一共拥有了n名职员,可惜没有任何的金钱和声誉。平均每名每天职员都可以给公司带来x单位金钱或者y单位声誉(名利不能双全)。并且可以花费z单位的金钱在人才交易市场发布广告招聘职员,每次发布广告三天以后就会招聘到一名职员,并且必须在发布广告并且招聘到职员的那一天才能发布下一次广告。 Blue Mary计划以最快的时间获得至少A单位金钱和至少B单位声誉,请你计算一下他至少需要多少时间才能达到他的目标。
Input
输入有且仅有一行,包含六个整数n,x,y,z,A和B,意义如题目描述所述。
Output
要求输出一行,包含一个整数,表示Blue Mary至少需要多少时间才能达到他的目标。
Sample Input
1 2 3 4 5 6
Sample Output
5
HINT
1<=n,x,y,z,A,B<=20
Solution
#include <stdio.h>
#include <memory.h>
#define inf 0x3f3f3f3f
#define dmin(a,b) ((a)<(b)?(a):(b))
#define dmax(a,b) ((a)>(b)?(a):(b)) int n,x,y,z,A,B,aa,f[][][][],ans; inline void shift(register int a,register int b,register int c,register int d,register int i,register int j,register int k,register int p){
if(b<)return;
b=dmin(b,aa);
c=dmin(c,B);
f[a][b][c][d]=dmin(f[a][b][c][d],f[i][j][k][p]+);
} int main(){
memset(f,0x3f,sizeof(f));
scanf("%d%d%d%d%d%d",&n,&x,&y,&z,&A,&B);
f[n][][][]=; aa=dmax(A,z); ans=inf;
for(register int i=n; i<=; i++)
for(register int p=; p<=; p++)
for(register int j=; j<=aa; j++)
for(register int k=; k<=B; k++)
if(f[i][j][k][p] != inf){
if(j >= A && k >= B){
ans=dmin(ans,f[i][j][k][p]);
continue;
}
if(f[i][j][k][p] > ans)
continue;
for(register int q=; q<=i; q++){
register int xx=j+x*q,yy=k+y*(i-q),ii=i;
if(p==)ii++;
if(p== || p==)
shift(ii,xx,yy,,i,j,k,p),shift(ii,xx-z,yy,,i,j,k,p);
else
shift(ii,xx,yy,p+,i,j,k,p);
}
}
printf("%d\n",ans);
return ;
}
最新文章
- ZeroMQ接口函数之 :zmq_ctx_set - 设置环境上下文属性
- 文件操作 模式r+与w+
- linux pstack命令总结
- javascript学习第三课引用类型object
- Android之绚丽的图片游览效果--有点像W7效果,透明的倒影,层叠的图片,渐变的颜色透明度
- Ngix 移动端与Pc端 反向代理判断
- JavaScript- 获取经度纬度
- Redpine的Lite-Fi解决方案获Wi-Fi CERTIFIED认证
- Update Case的用法与execute执行字符串
- mysql 安装-zip版
- javascript 数字字母组合的随机数
- 03MYSQL数据库
- WPF 格式化输出- IValueConverter接口的使用 datagrid列中的值转换显示
- Yii2 mongoDb的配置及使用
- Windows:添加、删除和修改静态路由
- 小B的询问
- STL序列式容器学习总结
- Unix下cp、tar、sudo命令的使用
- 互评Beta版本 - Hello World团队项目空天猎
- hdu2188巴什博弈