转载来自此博客:http://blog.csdn.net/qingshui23/article/details/51853530

有n个罐子,有k个硬币,每个罐子可以容纳任意数量的硬币。罐子是不透明的,你可以把这k个硬币任意分配到罐子里。然后罐子被打乱顺序,你从外表无法区别罐子。最后罐子被编上号1-n。每次你可以询问某个罐子,如果该罐子里有硬币,则你可以得到1个(但你不知道该罐子中还有多少硬币),如果该罐子是空的,你得不到任何硬币,但会消耗1次询问的机会。你最终要得到至少c枚硬币(c <= k),问题是给定n,k,c,由你来选择一种分配方式,使得在最坏情况下,询问的次数最少,求这个最少的次数。

例如:有3个罐子,10个硬币,需要得到7个硬币,(n = 3, k = 10, c = 6)。
你可以将硬币分配为:3 3 4,然后对于每个罐子询问2次,可以得到6个硬币,再随便询问一个罐子,就可以得到7个硬币了。
Input
输入3个数:n,k,c (1 <= n <= 10^9, 1 <= c <= k <= 10^9)。
Output
输出最坏情况下所需的最少询问次数。
Input示例
4 2 2
Output示例
4

解题思路:
刚开始我估计大多数人都是想的是平均分配,我也是这么想的,然后自信写了一发WA了,/尴尬,然后就想了一下什么特殊数据,果然,比如说 5 12 12
这个如果是平均分配的话,就是 2 2 2 3 3,那么最坏情况的最少询问是15次,但是我们可以这么分配0 3 3 3 3 ,那么最少的询问就是13次了,也就是说我们需要将最少的空位找到,只要是最少的空位,询问的次数肯定是最少的,知道了这个就可以AC了,要特判一下c <= k/n*n这个的情况。
My Code:

#include <iostream>
using namespace std;
typedef long long LL;
int main()
{LL n, k, c;while(cin>>n>>k>>c){LL ans = k/n*n;if(ans >= c)cout<<c<<endl;else{ans = (n - k/(k/n+1)) + c;///k/(k/n+1)是分别向上取整向下取整得到的最小的空位  cout<<ans<<endl;}}return 0;
}
/*
5 18 18
5-(18/((18/5)+1))//意思就是说每个罐子平均放三个 然后加一就是说  如果每个罐子放四个
那么只需要四个罐子   这样子有一个空的   最坏情况下先摸到一个空的 之后 0 4 4 5 5   从后面往前面摸上去   这样子就是 1+18=19
*/ 

G - 罐子和硬币 (思维题)相关推荐

  1. ACM思维题训练 Section A

    题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...

  2. 51nod-1246:罐子和硬币

    1246 罐子和硬币 题目来源: FaceBook HackerCup 比赛题 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有n个罐子,有k个硬 ...

  3. CSP难度的经典题目/有趣的思维题选讲(一)

    引言 这里讲到的难题是一部分非常典型的题目,但并不是所有.因此这并非是一个全面的知识列表,而只适合提高组同学用来提升能力和拓展视野. 这篇文章在很多地方讲述的不够详细和严谨,因为它的作用并非是题解,而 ...

  4. 罐子与硬币--【英雄会】

    好久没来英雄会了,所以今天来看看几题,看到"罐子与硬币"这一题不错,这种题目比较适合我的味道,不过,可惜啊...性子太急,分没到手... 题目如下: 有n个罐子,有k个硬币,每个罐 ...

  5. 字符串——BZOJ 3097: Hash Killer I【构造题,思维题】

    BZOJ 3097: Hash Killer I[构造题,思维题] 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3097 题意:让你出一组 ...

  6. Educational Codeforces Round 67 (Rated for Div. 2)(D思维题 线段树/E树形dp(换根dp) 二次扫描与换根法)

    心得 D写了个假算法被hack了wtcl- E据涛神说是二次扫描与换根法,看了看好像和树形dp差不多 F概率dp G费用流 回头再补 思路来源 马老师 归神 贤神等代码 http://www.mami ...

  7. little w and Soda(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  8. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  9. yoyo思维题(困难) 组合数学

    问题 B: yoyo思维题(困难) 时间限制: 1 Sec  内存限制: 256 MB 提交: 11  解决: 3 [提交][状态][讨论版][命题人:qianyouyou][Edit] [TestD ...

  10. 1884: 三个家庭(思维题)

    1884: 三个家庭 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 244 Solved: 81 [Submit][Status][Web Board] ...

最新文章

  1. android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?
  2. PHP常用类型判断函数
  3. 为什么他们能做成功?关于创业的几点感想
  4. EMOS SPF开启收不到信 及WEB收件箱不显示邮件列表等问题解决处理记录
  5. GET 和 POST 的区别(重要,面试常问)
  6. Markdown编辑器攻略——字体,字号,颜色
  7. mysql 注入 绕过防火墙_绕过阿里云防火墙继续扫描探测和SQL注入
  8. [配置]VUE中通过process.env判断开发,测试和生产环境,并分环境配置不同的URL HOST
  9. 浅析RTB和RTA(三)
  10. ElementUI-学生管理系统后台实例
  11. 系统学习NLP(二十四)--详解Transformer (Attention Is All You Need)
  12. nil,NULL,NSNull的区别
  13. 计算机网络管理员技师题库那个好,计算机网络管理员高级技师题库.docx
  14. *第四周*数据结构实践项目二【单链表算法库】
  15. 【方向盘】“江郎才尽”的周杰伦,出道已21周年
  16. arduino/Mixly使用MAX30102心率传感器
  17. React--》UI组件库ant-design的介绍与使用
  18. 网络安全-靶机dvwa之sql注入Low到High详解(含代码分析)
  19. linux kernel --- checksum相关ip_summed和feature字段解释
  20. 001_wz_bbk_GCC的介绍与发展历史

热门文章

  1. 完全总结bash中的条件判断test [ [[ 使用
  2. audio.js的研究与使用
  3. 常用html元素的取值和赋值方法总结
  4. 视频云存储平台 备忘
  5. [PKU 3580 3468][Noi 2005 Sequance]伸展树Splay 平衡树SBT(下)
  6. idea的数据库链接工具里看不到DDL
  7. com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor和oracle不识别
  8. maven:Java heap space内存不足错误的解决方法
  9. 阿里高级技术专家:研发效能的追求永无止境 1
  10. 聊天机器人语料批量处理-自动提取关键词并自动写入文件