Contest20140710 eagleeggs
eagleeggs|eagleeggs.in|eagleeggs.out
题目描述:
共有N个硬度相同的鹰蛋,硬度是一个整数(并且已知其不大于H),表示这个蛋从天上掉下来不摔碎的最大高度。为了找出这个最大高度,可以进行一些试验,每次实验把一个鹰蛋从一定高度扔下,根据这个鹰蛋是否摔碎可以知道真实的硬度是否大于你抛下的高度。
求在最坏情况下试验的最少次数。
输入格式:
一行两个整数N,H
输出格式:
一行一个整数,表示硬度
样例输入:
2
5
样例输出:
3
数据范围:
30%
N<=1000 H<=1000
对另外30%
N<=100000 H<=100000
对所有数据N<=10^9
H<=10^9
觉得课上dp讲的太复杂了,用组合数一下就做出来了。
注意一下爆int的处理
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define PROB "eagleeggs"
#define MAXN 10100
#define INF 0x3f3f3f3f
typedef unsigned long long qword;
qword dp[MAXN][];
qword c(int x,int y)//x<=30
{
if (y==)return x;
if (y==)return x*(x-)/;
if (y>x)return ;
dp[][]=;
int i,j;
for (i=;i<=x;i++)
{
dp[i][]=i;
for (j=;j<=x;j++)
{
dp[i][j]=dp[i-][j]+dp[i-][j-];
}
if (dp[i][y]>=INF)return INF;
}
return dp[x][y];
}
qword hgt(int n,int t)
{
qword ans=;
qword temp=;
int i,j;
for (i=n;i>;i--)
{
temp=c(t,i);
if (temp==INF)return INF;
ans+=temp;
if (ans>INF)return INF;
}
return ans;
}
int main()
{
freopen(PROB".in","r",stdin);
freopen(PROB".out","w",stdout);
int i,j,k;
int n;
qword h;
cin>>n>>h;
int l=,r=;
int mid;
if (n==)
{
printf("%d\n",h);
return ;
}
if (n>||(<<n)>=h)
{
printf("%d\n",(int)ceil(log2(h)));
return ;
}
if (n!=)r=;
while (l+<r)
{
mid=(l+r)/;
if (h<=hgt(n,mid))
{
r=mid;
}else
{
l=mid;
}
}
printf("%d\n",r);
}
Contest20140710 eagleeggs的更多相关文章
- Contest20140710 sequence
sequence|sequence.in|sequence.out 题目描述: 给定一个整数K和长为N的数列{Ai},求有多少个子串(不含空串)的和为K的倍数.(在这里子串表示{A[i]..A[j]} ...
- Contest20140710 loop bellman-ford求负环&&0/1分数规划
loop|loop.in|loop.out 题目描述: 给出一个有向带权图,权为边权,求一个简单回路,使其平均边权最小. 简单回路指不多次经过同一个点的回路. 输入格式: 第一行两个整数,表示图的点数 ...
随机推荐
- 基于特定领域国土GIS应用框架设计及应用
基于特定领域国土GIS应用框架 设计及应用 何仕国 2012年8月16日 摘要: 本文首先讲述了什么是框架和特定领域框架,以及与国土GIS 这个特定领 ...
- 常用命令-eval简析
www.2cto.com 1. 工作原理及用法 用法:eval command-line 原理:eval主要用在对参数的特殊处理上面的,一般的命令行,shell处理参数就只执行一遍,像转义和变 ...
- 15分钟弄懂 const 和 #define
什么是const ? 什么是#define? 他们有什么用? 他们有什么区别? 应该怎么用? 总结 1. 什么是const ? const是C/C++中的一个关键字(修饰符), const一般用来定义 ...
- Android(java)学习笔记169:Activity中的onCreate()方法分析
1.onCreate( )方法是android应用程序中最常见的方法之一: 翻译过来就是说,onCreate()函数是在activity初始化的时候调用的,通常情况下,我们需要在onCreate()中 ...
- 在Nginx中搭建Nagios监控平台
本文只做Nginx下Nagiox安装的说明,其它关于Nagios监控的详细配置请参考我的另一篇文章[Ubuntu 10.04下构建Nagios监控平台] Nagios依赖PHP环境和perl环境.由于 ...
- Sql产生自动增长的编号
USE [DBName]GO/****** Object: StoredProcedure [dbo].[sp_GetNo] Script Date: 10/24/2013 19:26:44 ...
- WIN7 VMware Ubuntu虚拟机连接secureCRT及ftp传输文件
一.安装vmware没有问题,网络设置以NAT方式(VMnet8是vmware专属的虚拟网卡).安装完毕后设置虚拟机的 VirtualNetworkEditor(可以再开始->所有程序VMwar ...
- java动态绑定的情况分析
java是面向对象的语言,java中多态的一种情况是动态绑定.所谓的动态绑定,分两种情况:当调用类方法的时候,java虚拟机会基于对象的引用类型来选择执行方法.当java调用一个实例方法的时候,他会根 ...
- [转]深入理解JavaScript系列
文章转自:汤姆大叔-深入理解JavaScript系列文章 深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力. 深入理解Ja ...
- 测试functional的bind以及相关功能
注:在VS2010 UPDATE1下测试通过 /*测试functional的bind以及相关功能*/ #include <iostream> #include <functional ...