传送门

分析

对于这道题,我们首先思考一个贪心策略,即对于所有我们要打败的厨师我们肯定可以先打败需使用帮助次数少的厨师再打败需使用帮助次数多的厨师 ,因为这样可以使得能支付得起帮助费用的可能性尽可能的大。在确定顺序之后我们便可以进行dfs啦,只需要在搜索过程中加一些可行性剪枝和最优性剪枝就行了。

代码

#include<bits/stdc++.h>
using namespace std;
#define li long long
const li inf = 1e12+;
int w[],c[],n,x,used[];
double pw[];
li ans=inf,all;
inline void dfs(int k,int wh,double m,double sum){
if((li)(sum+0.5)>=ans)return;
if(m>=){
ans=(li)(sum+0.5);
return;
}
if(m<double(k)*double(x))return;
if(m+double(all)/pw[k]<)return;
for(int i=wh;i<=n;i++)
if(!used[i]&&double(w[i])/pw[k]>double(k)*x){
used[i]=;all-=w[i];
dfs(k,i,m+double(w[i])/pw[k]-double(k)*x,sum+c[i]/pw[k]);
used[i]=;all+=w[i];
}
dfs(k+,,m,sum);
}
int main(){
int i,t;
pw[]=;
for(i=;i<=;i++)pw[i]=pw[i-]*;
scanf("%d",&t);
while(t--){
memset(used,,sizeof(used));
scanf("%d%d",&n,&x);
ans=inf;all=;
for(i=;i<=n;i++){
scanf("%d%d",&c[i],&w[i]);
all+=w[i];
}
dfs(,,,);
if(ans==inf)puts("impossible");
else printf("%lld\n",ans);
}
return ;
}

Evil Book -- CodeChef的更多相关文章

  1. 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1288  Solved: 490 ...

  2. code forces 383 Arpa's loud Owf and Mehrdad's evil plan(有向图最小环)

    Arpa's loud Owf and Mehrdad's evil plan time limit per test 1 second memory limit per test 256 megab ...

  3. C#Light/Evil合体啦

    决定将C#Light和C#Evil合并成一个项目,毕竟C#Evil包含C#Light所有的功能,分开两个,基本的表达式方面有什么bug还得两头改 暂时就C#Light/Evil这么叫吧,庆祝合体,画了 ...

  4. C#最良心脚本语言C#Light/Evil,Xamarin\WP8\Unity热更新最良心方案,再次进化.

    C#Light的定位是嵌入式脚本语言,一段C#Light脚本是一个函数 C#Evil定位为书写项目的脚本语言,多脚本文件合作,可以完全用脚本承载项目. C#Light/Evil 使用完全C#一致性语法 ...

  5. Java unserialize serialized Object(AnnotationInvocationHandler、ysoserial) In readObject() LeadTo InvokerTransformer(Evil MethodName/Args)

    Java unserialize serialized Object(AnnotationInvocationHandler.ysoserial) In readObject() LeadTo Tra ...

  6. 只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs

    只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs [ide is evil] (http://i.cnblogs.com/EditP ...

  7. 【BZOJ4260】 Codechef REBXOR 可持久化Trie

    看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是 ...

  8. D. Book of Evil

    D. Book of Evil time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  9. Gym 100463D Evil DFS

    Evil Time Limit: 5 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463/attachments Descri ...

随机推荐

  1. spring学习-5

    spring表达式SpEL 语法#{..},为bean的属性进行动态赋值 通过bean的id对bean进行引用 调用方法以及引用对象中的属性 计算表达式的值 正则表达式的匹配 修改Address.ja ...

  2. Codeforces Round #262 (Div. 2)C(二分答案,延迟标记)

    这是最大化最小值的一类问题,这类问题通常用二分法枚举答案就行了. 二分答案时,先确定答案肯定在哪个区间内.然后二分判断,关键在于怎么判断每次枚举的这个答案行不行. 我是用a[i]数组表示初始时花的高度 ...

  3. 打印iphone支持的所有字体

    //打印iphone支持的所有字体 NSArray *familyNames = [UIFont familyNames]; for(NSString *familyName in familyNam ...

  4. Photon多人游戏开发教程

    http://gad.qq.com/article/detail/26112 PUN介绍 入门 Photon Unity Networking(首字母缩写PUN)是一个Unity多人游戏插件包.它提供 ...

  5. DirectX 读书笔记(14) Cube mapping之SkyBox[转]

    http://blog.csdn.net/i_dovelemon/article/details/40481681 作者:i_dovelemon 来源:CSDN 日期:2014 / 10 / 26 主 ...

  6. grunt 压缩js css html 合并等配置与操作详解

    module.exports = function(grunt){ //1.引入 grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTa ...

  7. BZOJ3052:[WC2013]糖果公园

    浅谈莫队:https://www.cnblogs.com/AKMer/p/10374756.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?i ...

  8. .NET Framework、C#、CLR和Visual Studo之间的版本关系

    .NET Framework.C#.CLR和Visual Studo之间的版本关系 参考 .NET Framework.C#.CLR和Visual Studo之间的版本关系

  9. LTE流程

    LTE 过程全流程 1. UE处于关闭状态 2. 打开UE电源. 3. 搜索附近的频率 4. 同步时间 5. 小区搜索 6. 小区选择 7. 解码MIB 8. 解码SIB 9. 初始化RACH过程 1 ...

  10. js页面埋点

    页面埋点的作用,其实就是用于流量分析.而流量的意思,包含了很多:页面浏览数(PV).独立访问者数量(UV).IP.页面停留时间.页面操作时间.页面访问次数.按钮点击次数.文件下载次数等.而流量分析又有 ...