随笔分类 -  acm-二分

hdu 1969(二分)
摘要:题意:给了你n个蛋糕,然后分给m+1个人,问每个人所能得到的最大体积的蛋糕,每个人的蛋糕必须是属于同一块蛋糕的!分析:浮点型二分,二分最后的结果即可,这里要注意圆周率的精度问题!#include#include#include#includeusing namespace std;#define pi acos(-1.0)#define pes 1e-8double a[10005];int n,ren;void solve(double r){ double l=0,mid; int i; while(l+pes=ren) l=mid; els... 阅读全文

posted @ 2013-10-01 21:20 后端bug开发工程师 阅读(342) 评论(0) 推荐(0)

hdu 2899(数学基础+二分)
摘要:题意:给了你一个函数,然后给了你x的变化范围,让你求出函数的最小值。分析:它让你求的是函数的最小值,所以我们可以先对函数求导,得到的导数就可以判断函数的单调性了,求出导数后,我们发现如果函数的导数是x越大所求的的导数也就越大,当导数一直为负数时,函数是单调递减的;当导数开始是负数,然后是正数,那说明函数开始时递减的然后是递增的,那么当导数为0时函数值肯定是最小的!我们求导数为0的过程,我们可以用二分实现!代码实现:#include#include#include#define eps 1e-8double g(double x){ return 42*pow(x,6)+48*pow(x,... 阅读全文

posted @ 2013-10-01 21:12 后端bug开发工程师 阅读(343) 评论(0) 推荐(0)

hdu4521(最长递增子序列的二分思想)
摘要:题意:就是求一个序列的最长递增子序列,但是下标有要求就是新的序列的相邻项的下标相差d.思路:在原来求最长递增子序列的基础上加一些条件使得相邻项的下标相差d....代码实现:#include<stdio.h>#include<string.h>int a[100005],dp[100005],b[100005];int main(){ int n,d,i,temp; while(scanf("%d%d",&n,&d)!=EOF) { int p,r,m,len=1,max=1; for(i=0;i<n;i++) { scanf(. 阅读全文

posted @ 2013-03-26 23:09 后端bug开发工程师 阅读(296) 评论(0) 推荐(0)

最长递增子序列(时间复杂度n*logn)
摘要:利用二分的思想将时间复杂度降到了n*logn,很好~代码实现:#include<stdio.h>//时间复杂度为(n*logn)#include<string.h>int a[5001],dp[5001];int main(){ int i,n,len,m,r,p; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); dp[0]=-1000000; dp[1]=a[0]; len=1; for(i=1;i<n;i++) ... 阅读全文

posted @ 2013-03-26 15:18 后端bug开发工程师 阅读(394) 评论(2) 推荐(0)

导航