CF Gym 100187A Potion of Immortality (思路,最坏情况的最小损失)
根据兔子试药情况可以缩小范围,如果死了,不在试过的药里面,如果活着,在试过的药里。
最糟的情况:
两个原则 1.能确定魔药所在的范围的尽量大,2.死得兔子尽量多。
如果当前不知道情况的药n为k的二倍以上,那么基于上面两个原则,试过药的兔子肯定会死。
没死:范围k,损失的兔子0
死了:范围n-k,损失的兔子1 (n>2*k) (符合两个原则)
设r=n%k,经过上述过程,损失了n/k-1只兔子,转移到了当前状态范围w = k+r,
1.r == 0 那么可以补充一个毒药,变成w=k+1,根据鸽巢原理再死一个就可以确定
2.r == 1 同上 死一个
3.r > 1 因为在这种情况下两原则是矛盾的,那么根据试药情况分类 (当时我就沙茶在这里了。。。)
情况1 兔子没事,范围变成k,同1,再死一个能确定。
情况2 兔子死了,范围变成r,补充毒药变成k+1,一共死两个。
所以是死两次
然而,前面讨论还不全面,注意能补充毒药的前提,如果n == k 没法补充毒药,所以-1。
注意它给的数据范围 n = 1时是不要试药的。还有k == 1时 经过两原则它是转移到 n = 1的情况,不要试药。
总结:很考全面思维的能力。然而误解题意的我用什么dp,二分。。。
#include<cstdio> int main()
{
int n, k;
scanf("%d%d",&n,&k);
if(n==){
printf("");
} else
if(n == k){
printf("-1");
}
else if(k == ){
printf("%d",n/k-);
} else {
int r = n%k;
if(r == || r ==){
printf("%d",n/k);
}
else printf("%d",n/k+);
} return ;
}
CF Gym 100187A Potion of Immortality (思路,最坏情况的最小损失)的更多相关文章
- CF Gym 100463B Music Mess (思路)
好题,当时想了半个小时,我往图论方面去想了,把出现过的字符串当场点,然后相互连边,那么就构成了一个三角形,一个大于三个点的连通分量里有以下结论:度为二的点可能是track,度为大于二的点一定不是tra ...
- codeforces Gym 100187A A. Potion of Immortality
A. Potion of Immortality Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1001 ...
- Gym - 100187A A - Potion of Immortality —— 贪心
题目链接:http://codeforces.com/gym/100187/problem/A 题解: 光题意就想了很久:在最坏情况下的最小兔子数.其实就是至少用几只兔子就一定能找出仙药(答案存在的话 ...
- CF Gym 102028G Shortest Paths on Random Forests
CF Gym 102028G Shortest Paths on Random Forests 抄题解×1 蒯板子真jir舒服. 构造生成函数,\(F(n)\)表示\(n\)个点的森林数量(本题都用E ...
- POJ3783Balls[DP 最坏情况最优解]
Balls Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 907 Accepted: 598 Description T ...
- 一种最坏情况线性运行时间的选择算法 - The missing worst-case linear-time Select algorithm in CLRS.
一种最坏情况线性运行时间的选择算法 - The missing worst-case linear-time Select algorithm in CLRS. 选择算法也就是求一个无序数组中第K大( ...
- k个鸡蛋从N楼层摔,如果确定刚好摔碎的那个楼层,最坏情况下最少要试验x次?
题目 k个鸡蛋从N楼层摔,如果确定刚好摔碎的那个楼层,最坏情况下最少要试验x次? 换个说法: k个鸡蛋试验x次最多可以检测N层楼.计算出N? 逆向思维和数学公式解. 分析 定义N(k,x) 如果第k个 ...
- codeforces Gym 100500H A. Potion of Immortality 简单DP
Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/a ...
- CF gym 101933 K King's Colors —— 二项式反演
题目:http://codeforces.com/gym/101933/problem/K 其实每个点的颜色只要和父亲不一样即可: 所以至多 i 种颜色就是 \( i * (i-1)^{n-1} \) ...
随机推荐
- 2-7 Flutter开发工具使用指南
这里选择用哪个模拟器运行 Mac系统下可以通过这个Open IOS Siumlator打开IOS模拟器 debug用来调试的 可以创建新的模拟器 选择安卓模拟器的版本 这是sdk的配置 点开就是打开了 ...
- Go语言调度器之盗取goroutine(17)
本文是<Go语言调度器源代码情景分析>系列的第17篇,也是第三章<Goroutine调度策略>的第2小节. 上一小节我们分析了从全局运行队列与工作线程的本地运行队列获取goro ...
- U3D Shader基础
http://blog.sina.com.cn/s/blog_471132920101dcnr.html 转载自风宇冲Unity3D教程学院 一个SubShader(渲染方案)是由一个个Pass块来执 ...
- 学习SpringMVC时遇到的一些问题
1. 找不到mapping 比较弱智的问题,忘了在对应的类上加上 @Controller 注解了 2. Model中设置的值不显示 Eclipse 自动生成的web.xml 是 2.3版本的,网上说改 ...
- IT兄弟连 JavaWeb教程 文件上传技术
在Web应用系统开发中,文件上传和下载功能是非常常用的功能. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参 ...
- 十一、python的高级语法与用法
一.枚举其实是一个类 现实世界中的“类型”,在计算机世界中如何描述? 常见的 1)用1.2.3..等数字表示类型 2)较好的做法是用字典表示 3)最好的是使用枚举 # coding=utf-8 fro ...
- 剑指Offer的学习笔记(C#篇)-- 变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 一 . 解题思路. 该题目为跳台阶题目的延伸,普通跳台阶每次跳的阶数(1或2) ...
- node学习(2)-路由读取图片
通常我们开发项目的时候都要用到图片,那么nodejs是如何读取图片的呢? 我们来看一下,因为一个网页中图片的数量是不确定的,而我们不能每一张图片都去写它的src路径,这时候最好的方法就是写一个专门读取 ...
- [转] iOS开发-搜索栏UISearchBar和UISearchController
原文网址: http://www.cnblogs.com/xiaofeixiang/p/4273620.html?utm_source=tuicool iOS中UISearchDisplayContr ...
- Sass 愿景
在最近的一个 CSS 见面会上,我向与会者提问,“有人会在日常的工作流中使用 Sass 吗?”回答结果压倒性的表示肯定——保守谨慎地使用 Sass 已经成为过去式.Sass 正迅速成长为编写 CSS ...