【问题描述】
又到吃饭时间,Polo 面对饭堂里琳(fei)琅(chang)满(keng)目(die)的各种食品,
又陷入了痛苦的抉择中:该是吃手(jiao)打肉饼好呢,还是吃豆(cai)角(chong)肉片
好呢?嗯……又不是天秤座怎么会酱紫呢?
具体来说,一顿饭由 M 个不同的部分组成(荤菜,素菜,汤,甜品,饮料等
等),Polo 要在每个部分中选一种作为今天的午饭。俗话说的好,永远没有免费
的午餐,每种选择都需要有一定的花费。长者常常教导我们,便宜没好货,最便
宜的选择估计比较坑爹,可囊中羞涩的 Polo 还要把钱省下来给某人买生日礼物,
这该怎么办呢?
于是一个折中方案出来了:第 K 便宜的组合要花多少钱?这就要靠你了。
【输入】
第一行两个数 M,K,含义如上所述。
接下来 M 行,先是一个整数 Ai,表示第 i 个部分有多少种选择。接下来用
空格分开的 Ai 个整数表示每种选择的价格。
【输出】
一行一个整数表示答案。
【输入输出样例】
perdant.in perdant.out
2 2
2 1 3
2 2 2
3
【样例解释】
最便宜的选择是第一部分选择 1 块钱的,第二部分选择 2 块的。但由于第二
部分里 2 块钱有两种不同的选择,所以第二便宜的总花费仍然是 3 块。
【数据规模和约定】
10%的数据
M i
Ai
1
<=1000,M<=2。
30%的数据有 M<=2。
50%的数据有 K<=1000。
100%的数据有 Ai>0,
M i
Ai
1
<=500000,1<=M<=10,1<=K<=100000,1<=
价格<=10^8。

题解:

这个题目,考试的时候想到k短路,但k短路只会A星的做法,所以就愉快的爆空间了。然后开了同学的做法,首先可以二分一个答案,但是怎么check?可以dfs,但dfs写的太丑能只有50分,于是要加剪枝,如果当前的总花费已经大于了二分的答案就不要再搜了(十分显然),如果当前的合法(总数比二分的答案小)方案数已经大于了k,就可以返回了。

代码:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<cstring>
#include<queue>
#define ll long long
using namespace std;
int m,k;
int cost[][],lenn[],flag=;
ll l=,r=,sum=; void check(int dep,ll rest){
if(dep==m+){
sum++;
return;
}
if(sum>=k) return;
for(int i=;i<=lenn[dep];i++){
if(cost[dep][i]>rest) return;
check(dep+,rest-cost[dep][i]);
}
}
int main(){
scanf("%d%d",&m,&k);
for(int i=;i<=m;i++){
scanf("%d",&lenn[i]);
for(int j=;j<=lenn[i];j++) scanf("%d",&cost[i][j]);
sort(cost[i]+,cost[i]+lenn[i]+);
l+=cost[i][],r+=cost[i][lenn[i]];
}
ll mid,ans;
while(l<=r){
mid=(l+r)/;
sum=;
check(,mid);
if(sum>=k) r=mid-,ans=mid;
else l=mid+;
}
printf("%lld",ans);
}

[JOJZ]3855.选择困难症的更多相关文章

  1. 选择困难症的福音——团队Scrum冲刺阶段-Day 1领航

    选择困难症的福音--团队Scrum冲刺阶段-Day 1领航 各个成员在 Alpha 阶段认领的任务 小组成员 分工 任务量 严域俊 完成小游戏接口部分.小游戏编写部分 21 吴恒佚 决策判断部分.小游 ...

  2. 选择困难症的福音——团队Scrum冲刺阶段-Day 2

    选择困难症的福音--团队Scrum冲刺阶段-Day 2 今日进展 编写提问部分 如何将不同的问题选项连接到不同的下一个问题 如何保证问题的链接不会弄丢 登陆注册界面 完成密码可见与不可见的更改 ui界 ...

  3. 选择困难症的福音——团队Scrum冲刺阶段-Day 3

    选择困难症的福音--团队Scrum冲刺阶段-Day 3 今日进展 编写提问部分 做了不同问题所对应的游戏选项,但关于游戏分类的界面还没有做完 登陆注册界面 更改ui界面,ui界面终于变好看了:) 学习 ...

  4. 选择困难症的福音——团队Scrum冲刺阶段-Day 4

    选择困难症的福音--团队Scrum冲刺阶段-Day 4 今日进展 编写提问部分 做了不同问题所对应的游戏选项,但关于游戏分类的界面还没有做完 增加功能 昨天在主界面增加"关于我们" ...

  5. 选择困难症的福音——团队Scrum冲刺阶段-Day5(补发 那天csshow)

    选择困难症的福音--团队Scrum冲刺阶段-Day 5 今日进展 编写提问部分 游戏分类的界面 将之前错误的图标改正 关于我们的俄罗斯方块,今天有了新的进展 NextBlockView(定义了下一个方 ...

  6. 选择困难症的福音——团队Scrum冲刺阶段-Day 7

    选择困难症的福音--团队Scrum冲刺阶段-Day 7 今日进展 测试代码 将界面设计完后放app使用示意图于此 今日贡献量 严域俊 吴恒佚 曾程 刘辰 邓煜坤 3.5 3.5 3.3 3.6 3 贡 ...

  7. 长沙理工大学第十二届ACM大赛-重现赛 L - 选择困难症

    题目描述 小L有严重的选择困难症. 早上起床后,需要花很长时间决定今天穿什么出门. 假设一共有k类物品需要搭配选择,每类物品的个数为Ai,每个物品有一个喜欢值Vj,代表小L对这件物品的喜欢程度. 小L ...

  8. 长沙理工大学第十二届ACM大赛L 选择困难症 (剪枝暴搜)

    链接:https://ac.nowcoder.com/acm/contest/1/L 来源:牛客网 选择困难症 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 131072K,其他语言 ...

  9. 微信小程序--帮助选择困难症者

    用户登录小程序成功后,通过传来的code获取openid,后端用的是PHP //获取code值换取openid public function code_weixin(Request $request ...

随机推荐

  1. redis事务与关系型数据库事务比较

    redis 是一个高性能的key-value 数据库.作为no sql 数据库redis 与传统关系型数据库相比有简单灵活.数据结构丰富.高速读写等优点. 本文主要针对redis 在事物方面的处理与传 ...

  2. DB-Lib error message 20002, severity 9

    完整报错内容:20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (I0.185.4 ...

  3. 联邦学习开源框架FATE助力腾讯神盾沙箱,携手打造数据安全合作生态

    近日,微众银行联邦学习FATE开源社区迎来了两位新贡献者——来自腾讯的刘洋及秦姝琦,作为云计算安全领域的专家,两位为FATE构造了新的功能点,并在Github上提交修复了相关漏洞.(Github项目地 ...

  4. Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则

    Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则 前面几篇文章较为详细的介绍了Sentinel的使用姿势,还没看过的小伙伴可以访问以下链接查看: &l ...

  5. 一次写文,多平台直接粘贴&打造最流畅的写作流程

    文字爱好者的痛点 这一段可以跳过,解决办法在后面.因为大家既然痛过,也就懂了. 对于很多文字爱好者来说,都希望写一篇文章后,可以实现多平台发布. 国内的很多平台都开始支持 Markdown,除了微信公 ...

  6. Winform中通过代码设置DevExpress的TextEdit的类型为Numbernic

    场景 使用DevExpress的EditText控件时,需要限制其输入类型为数字. 正常来说是窗体上拖拽一个TextEdit,然后在设计窗口点击小三角,选择Change Mask 但是如果说TextE ...

  7. Django--路由层、视图层、模版层

    路由层: 路由匹配 url(正则表达式,视图函数内存地址) 只要正则匹配到了内容,就不再往下匹配,而是直接运行后面的视图函数 匹配首页) url(r'^&', home) 匹配尾页 url(r ...

  8. Java第三次作业第四题

    4. [问题描述]读取一个文本文件in.txt,然后将这个文件的内容,反序写到另一个文件out.txt中. [输入形式]从文件in.txt中读信息. [输出形式]反序内容写入out.txt文件中. [ ...

  9. 取html里的img和去html标签

    C#  : public string RemoveHTML(string html) { html = Regex.Replace(html, @"<script[^>]*?& ...

  10. 一个vue练手的小项目

    编程路上的菜鸟一枚 : 最近接触了vue 然后写了一个练手的项目 使用vue-cli脚手架来搭建了的项目 技术: vue2  + vue-router  + ES6 + axios 框架有 mint- ...