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的更多相关文章

  1. Contest20140710 sequence

    sequence|sequence.in|sequence.out 题目描述: 给定一个整数K和长为N的数列{Ai},求有多少个子串(不含空串)的和为K的倍数.(在这里子串表示{A[i]..A[j]} ...

  2. Contest20140710 loop bellman-ford求负环&&0/1分数规划

    loop|loop.in|loop.out 题目描述: 给出一个有向带权图,权为边权,求一个简单回路,使其平均边权最小. 简单回路指不多次经过同一个点的回路. 输入格式: 第一行两个整数,表示图的点数 ...

随机推荐

  1. 基于特定领域国土GIS应用框架设计及应用

              基于特定领域国土GIS应用框架 设计及应用              何仕国 2012年8月16日   摘要: 本文首先讲述了什么是框架和特定领域框架,以及与国土GIS 这个特定领 ...

  2. 常用命令-eval简析

    www.2cto.com   1. 工作原理及用法   用法:eval command-line 原理:eval主要用在对参数的特殊处理上面的,一般的命令行,shell处理参数就只执行一遍,像转义和变 ...

  3. 15分钟弄懂 const 和 #define

    什么是const ? 什么是#define? 他们有什么用? 他们有什么区别? 应该怎么用? 总结 1. 什么是const ? const是C/C++中的一个关键字(修饰符), const一般用来定义 ...

  4. Android(java)学习笔记169:Activity中的onCreate()方法分析

    1.onCreate( )方法是android应用程序中最常见的方法之一: 翻译过来就是说,onCreate()函数是在activity初始化的时候调用的,通常情况下,我们需要在onCreate()中 ...

  5. 在Nginx中搭建Nagios监控平台

    本文只做Nginx下Nagiox安装的说明,其它关于Nagios监控的详细配置请参考我的另一篇文章[Ubuntu 10.04下构建Nagios监控平台] Nagios依赖PHP环境和perl环境.由于 ...

  6. Sql产生自动增长的编号

    USE [DBName]GO/****** Object:  StoredProcedure [dbo].[sp_GetNo]    Script Date: 10/24/2013 19:26:44 ...

  7. WIN7 VMware Ubuntu虚拟机连接secureCRT及ftp传输文件

    一.安装vmware没有问题,网络设置以NAT方式(VMnet8是vmware专属的虚拟网卡).安装完毕后设置虚拟机的 VirtualNetworkEditor(可以再开始->所有程序VMwar ...

  8. java动态绑定的情况分析

    java是面向对象的语言,java中多态的一种情况是动态绑定.所谓的动态绑定,分两种情况:当调用类方法的时候,java虚拟机会基于对象的引用类型来选择执行方法.当java调用一个实例方法的时候,他会根 ...

  9. [转]深入理解JavaScript系列

    文章转自:汤姆大叔-深入理解JavaScript系列文章 深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力. 深入理解Ja ...

  10. 测试functional的bind以及相关功能

    注:在VS2010 UPDATE1下测试通过 /*测试functional的bind以及相关功能*/ #include <iostream> #include <functional ...