DFS略思维题做题记录
2024-10-12 10:34:52
洛谷:P4399 [JSOI2008]Blue Mary的职员分配
代码:
#include<iostream>
using namespace std;
int n,x,y,z,A,B,Ans=INT_MAX;
void Depth_fs(int staff/*员工*/,int money/*现有钱数*/,int reput/*现有声誉*/,int Dayz/*经过天数*/,int Emcd/*招聘冷却*/)
{
if(Dayz>Ans) return;//如果已经比现存最优解要差就终止搜索 int disted=1;//已经分配的人数 (因为最后会加到n+1所以初值赋为一)
while(disted<=staff&&money<A) {//因为赚钱可以用于招聘员工所以贡献更大故而优先赚钱 (贪心思想)
disted++; money+=x;
} while(disted<=staff&&reput<B) {//剩余员工用于赚取声誉
disted++; reput+=y;
} if(money>=A&&reput>=B) {//钱和声誉都赚够了(因为如果比之前最优解的情况已经被剪掉所以这就是新的最优解)
Ans=Dayz; return;
} if(Emcd>=0) {//经过一天招聘冷却-1
Emcd--;
if(Emcd==0) {
staff++;
}
} Depth_fs(staff,money,reput,Dayz+1,Emcd);//不招聘新员工 if(money>=z&&Emcd<=0) {
Depth_fs(staff,money-z,reput,Dayz+1,3);//招聘新员工
} return;
} int main()
{
cin>>n>>x>>y>>z>>A>>B;
Depth_fs(n,0,0,1,-1);
cout<<Ans;
return 0;
}
最新文章
- 什么是UV?
- VQuery高级特性
- 【翻译十三】java-并发之饥饿与活锁
- Java 新手学习 CSS样式列表 排版 格式布局
- 增大VM下linux的根目录空间
- js跳转页面方法大全
- WinForm中异步加载数据并使用进度条
- editplus 替换换行 excel 表格 拼装sql语句技巧
- 使用.9.png报错 Exception raised during rendering
- 20160526-20160531mybatis入门进阶
- ubuntu安装软件
- opencl 和Renderscript总结
- php中static 静态关键字
- Flask 系列之 优化项目结构
- Day5_Py模块_1
- 利用Python中的mock库对Python代码进行模拟测试
- Linux预处理、编译、汇编、链接和运行的过程(包括一些基本的命令)
- netcore配置文件与发布
- gdb的调试常用命令
- 转 JS模块化简单实现