Problem G: 蛤玮点菜

Time Limit: 2 Sec  Memory Limit: 128 MB
Submit: 320  Solved: 31

SubmitWeb Board

Description

在我们下饭店的时候蛤玮经常负责点菜,今天饭店搞活动,当总价格大于等于X时可以减去Y的优惠,注意如果总价是2X也仅减去一倍Y.蛤玮非常了解菜品也了解大家,他知道每个菜品有一个饱食度,只有菜品饱食度的和不小于K时大家才会吃的开心.请问蛤玮如何点菜才能在让大家吃的开心的前提下花尽量少的钱,输出最后需要付的钱.注意蛤玮是个有追求的人,所以他不会点重复的菜.

Input

T(1<=T<=40),表示数据组数.
每组数据第一行n(1<=n<=30),K,X,Y(1<=K,X,Y<=1e9, X>=Y),表示一共有n种菜,X,Y,K如题目中描述.
接下来n行每行两个数ai,bi(1<=ai,bi<=1e8),分别表示第i个菜的价格和饱食度.

Output


每组数据输出一个数,表示总价.如果无解则输出"go die".

Sample Input

1
2 2 20 12
10 2
10 2

Sample Output

8

2^30的暴力会超时,只能分成两个2^15的堆,之后这两堆都按饱食度排序,价格就可以二分了

https://acm.zzuli.edu.cn/zzuliacm/problem.php?cid=1215&pid=6

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<set>
using namespace std;
#define LL long long
#define Max 21448255551228315ll
typedef struct Res
{LL v;LL p;
}Res;
set<LL> st;
bool comp(Res a, Res b)
{if(a.v<b.v || a.v==b.v && a.p<b.p)return 1;return 0;
}
Res s1[100005], s2[100005], a[35];
int main(void)
{LL T, n, j, i, k1, k2, ed, v, p, K, X, Y, ans;scanf("%lld", &T);while(T--){ans = Max;scanf("%lld%lld%lld%lld", &n, &K, &X, &Y);for(i=1;i<=n;i++)scanf("%lld%lld", &a[i].p, &a[i].v);k1 = k2 = 0;ed = n/2;for(i=0;i<=(1ll<<ed)-1;i++){v = p = 0;for(j=0;j<=ed-1;j++){if(i&(1ll<<j)){v += a[j+1].v;p += a[j+1].p;}}s1[++k1].v = v;s1[k1].p = p;if(v>=K){if(p>=X)ans = min(ans, p-Y);elseans = min(ans, p);}}ed = n-n/2;for(i=0;i<=(1ll<<ed)-1;i++){v = p = 0;for(j=0;j<=ed-1;j++){if(i&(1ll<<j)){v += a[j+1+n/2].v;p += a[j+1+n/2].p;}}s2[++k2].v = v;s2[k2].p = p;if(v>=K){if(p>=X)ans = min(ans, p-Y);elseans = min(ans, p);}}sort(s1+1, s1+k1+1, comp);sort(s2+1, s2+k2+1, comp);st.clear();ed = k2;for(i=1;i<=k1;i++){while(s1[i].v+s2[ed].v>=K && ed>=1){p = s1[i].p+s2[ed].p;if(p>=X)p -= Y;st.insert(s2[ed].p);ans = min(ans, p);ed--;}if(st.empty()==1)continue;ans = min(ans, s1[i].p+(*st.begin()));if(st.lower_bound(X-s1[i].p)!=st.end())ans = min(ans, s1[i].p+(*st.lower_bound(X-s1[i].p))-Y);}if(ans==Max)printf("go die\n");elseprintf("%lld\n", ans);}return 0;
}

“玲珑杯”郑州轻工业学院第八届ACM程序设计大赛Problem G: 蛤玮点菜相关推荐

  1. nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)

    题目1237 题目信息 执行结果 本题排行 讨论区 最大岛屿 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 神奇的海洋.惊险的探险之路,打捞海底宝藏,激烈的海战,海 ...

  2. nyoj 1239 引水工程 (河南省第八届acm程序设计大赛)

    题目1239 题目信息 运行结果 本题排行 讨论区 引水工程 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程, ...

  3. 退役赛总结(山东省第八届ACM程序设计大赛总结)

    大一上学期就认识了学长,当时只是想着参加蓝桥杯,老师就让跟着他们训练,我和R就这样入队了,当时日常训练就6个人,平时也就我们6个在那刷题,那时候听说了ACM,但是一直觉得那东西好像很难,好像很吊,也没 ...

  4. 广东工业大学第12届ACM程序设计大赛 Problem H: tmk买礼物

    Problem H: tmk买礼物 Description 今天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LSH庆祝一下. TMK进入了雪梨超市,然后刚踏入的一瞬间,店主就对TMK ...

  5. 广东工业大学第12届ACM程序设计大赛 Problem D: 只有通过毁灭才能揭示真理

    Problem D: 只有通过毁灭才能揭示真理 Description "只有通过毁灭才能揭示真理." -- 虚空之眼 维克兹是一个有触手的虚空来客,他带着非凡的意图探索着符文之地 ...

  6. NYOJ_5739最大岛屿(河南省第八届acm程序设计大赛)

    题目连接 题目描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王.  这是一个由海 ...

  7. 1262: 魔法宝石 (“玲珑杯”河南工业大学ACM程序设计大赛)

    问题 C: 魔法宝石 时间限制: 2 秒  内存限制: 64 MB 提交: 242  解决: 46 提交 状态 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使 ...

  8. “玲珑杯”郑州轻工业学院第九届ACM程序设计大赛圆满结束

    "玲珑杯"郑州轻工业学院第九届ACM程序设计大赛圆满结束 ACM/ICPC国际大学生程序设计竞赛由美国计算机学会主办,是目前国际大学生计算机相关领域公认规模最大.水平最高的赛事之一 ...

  9. ACM程序设计大赛概况

    ACM程序设计大赛概况 一. ACM大赛简介 ACM国际大学生程序设计竞赛(ACM/ICPC:ACM International Collegiate Programming Contest)是由国际 ...

最新文章

  1. python访问数据库如何解决高并发_怎样解决数据库高并发的问题
  2. dedecms 漏洞_代码审计之二次漏洞审计
  3. Python 报错 SyntaxError: invalid syntax 解决方法
  4. windows上安装gcc/g++环境(MinGW,msys64等)
  5. 【Java设计模式】装饰模式
  6. linux里hba状态_在Linux/Unix平台查看HBA卡的WWN号 和状态
  7. Oracle学习:视图与索引
  8. dev c++怎么设置断点_Linux怎么挂载移动硬盘光盘U盘之案例分享
  9. 互联网晚报 | 11月13日 星期六 | 腾讯、抖音商谈对等开放;荣耀电商平台粉丝破亿;碧桂园杨惠妍第九次成为中国女首富...
  10. 阿里纳斯Adidas广告词
  11. ctypes安装_用python amp; bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本
  12. CodeForces 722C Destroying Array
  13. linux 9 -- 交互式使用Bash Shell
  14. 个人经常查阅的网站(顺序无先后,持续更新)
  15. android 古诗,古诗词朗诵安卓
  16. JEECMS V8.1常用标签举例
  17. 青岛小学 初中有计算机编程比赛,2017年青岛中小学信息技术竞赛活动.doc
  18. 阿里、百度、搜狐等公司社招面试记录与总结
  19. 小米运动app关联支付宝
  20. 虚拟机包 OVF和OVA的区别

热门文章

  1. python语言的读法-Python语言的特点及自学建议
  2. python 线性回归 约束_python – Tensorflow:具有非负约束的线性回归
  3. winform 往第三方传值 put
  4. linux卸载alien,Ubuntu/Debian下的安装包装换工具—alien
  5. koa操作mongodb,封装mongdb操作方法
  6. 开源安卓播放器:Dolphin Player 简单分析
  7. 全参考视频质量评价方法(PSNR,SSIM)以及相关数据库
  8. mongodb自定义字段_MongoDB哈希分片
  9. 【代码源 Div1 - 108】#464. 数数(主席树,区间比k小的数的个数)HDU4417
  10. 配置Git for windows(Git bash)登录GitHub