上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 20 下一页

2013年10月1日

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开发工程师 阅读(328) 评论(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开发工程师 阅读(335) 评论(0) 推荐(0) 编辑

2013年9月29日

容器

摘要: #include#include#include#include#includeusing namespace std;struct node{ int t1; int t2;};vectorQ[100005];__int64 sum[100005],s;int cmp(node a,node b){ if(a.t1max) max=cao; } for(i=1;i=i) s+=Q[j][i-1].t2; sum[i]=sum[i-1]+s; } w... 阅读全文

posted @ 2013-09-29 21:03 后端bug开发工程师 阅读(203) 评论(0) 推荐(0) 编辑

2013年9月16日

poj 2185(二维kmp)

摘要: 题意:让你求一个最小的覆盖子矩阵。分析:首先第一点是确定的:那就是这个子矩阵肯定位于左上角,然后按行考虑,求出每一行可能的重复子串的长度,然后取所有行都存在并且长度最短的长度最为最小子矩阵的宽,最后按列队长度为宽的字符串进行一次kmp求出循环节的长度。代码实现:#include#include#includeusing namespace std;int n,m,windth,height;char str[10005][80];int visited[80],next[10005];void solve(){ int i,j; for(i=0;i=1;j--) ... 阅读全文

posted @ 2013-09-16 20:32 后端bug开发工程师 阅读(302) 评论(0) 推荐(0) 编辑

2013年9月13日

hdu 4333(扩展kmp)

摘要: 题意:就是给你一个数字,然后把最后一个数字放到最前面去,经过几次变换后又回到原数字,问在这些数字中,比原数字小的,相等的,大的分别有多少个。比如341-->134-->413-->341,所以和原数字相比,比原数字小的有一个,相等的有一个,大的有一个。分析:经过观察,其实就是求每一位的后缀与自身的最长公共前缀,这个显然可以用扩展kmp处理,但是开始的时候我超时了,后来在网上看到别人把这个串后面再接上本身,以它为主串,然后以自身为模板串进行扩展kmp,这样处理把时间复杂度降到了线性的,最后要注意的一个问题就是如何避免重复了,我们可以用普通的kmp求出此串的最小循环节,如果构成完 阅读全文

posted @ 2013-09-13 10:08 后端bug开发工程师 阅读(1542) 评论(0) 推荐(0) 编辑

2013年9月6日

poj 1472(递归模拟)

摘要: 题意:就是让你求出时间复杂度。分析:由于指数最多为10次方,所以可以想到用一个数组保存各个指数的系数,具体看代码实现吧!代码实现:#include#include#include#includeusing namespace std;char str[1000][100];char key[100];int num;struct node{ int sum[15]; void init() { memset(sum,0,sizeof(sum)); }};void init()//把字符串提取出来{ int i,t=1,num=0; scanf(... 阅读全文

posted @ 2013-09-06 20:25 后端bug开发工程师 阅读(730) 评论(0) 推荐(0) 编辑

2013年9月4日

poj 1026(置换群)

摘要: 题意:给你一个变换规则,和一个字符串,问经过k次变换后得到的字符串。 思路:开始的时候试图去找它的整个周期,谁知道周期太大了,各种RE,后来在得知此题需要用置换群来优化,第一次接触置换群学习了下! 代码实现: 阅读全文

posted @ 2013-09-04 17:42 后端bug开发工程师 阅读(926) 评论(0) 推荐(0) 编辑

2013年9月2日

hdu 1506

摘要: 基本的单调栈作用:给出一排矩阵的高,让你从这些矩阵中划分出最大的矩阵时间复杂度接近线性了#include#include#define N 100005int q[N]={-1},w[N];//q数组是栈,w数组保存的是每个矩阵的左宽__int64 max(__int64 a,__int64 b){ return a>b?a:b;}int main(){ int i,n,h; while(scanf("%d",&n)!=EOF&&n) { int top=0; __int64 ans=0; for(i=1;iq[top])//单... 阅读全文

posted @ 2013-09-02 10:21 后端bug开发工程师 阅读(417) 评论(0) 推荐(0) 编辑

2013年8月19日

矩阵模板

摘要: struct node{ __int64 x[size][size];}a,b;struct node juzheng(struct node a,struct node b,__int64 n){ __int64 i,j,k; struct node c; for(i=0;i>1; a=juzheng(a,a,size); }} 阅读全文

posted @ 2013-08-19 19:53 后端bug开发工程师 阅读(667) 评论(0) 推荐(0) 编辑

2013年8月15日

poj 1743(后缀数组)

摘要: 题意:求一个串中的最长重复不重叠子串。分析:只需要做到不重叠就解决了。代码实现:#include#include#include#includeusing namespace std;int ws1[20005],wv[20005],wa[20005],wb[20005];int rank[20005],height[20005],sa[20005];int str[20005],a[20005],len;int cmp(int *r,int a,int b,int l){ return r[a]==r[b] && r[a+l]==r[b+l];}void da(int *r, 阅读全文

posted @ 2013-08-15 23:28 后端bug开发工程师 阅读(199) 评论(0) 推荐(0) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 20 下一页

导航