摘要: bool find(int x,int l,int r){ if(l>r)return false; int mid=(l+r)/2; if(s[mid]==x) return true; else if(s[mid]>x)return find(x,l,mid-1); else return find(x,mid+1,r);} 阅读全文
posted @ 2014-02-08 21:00 forever97 阅读(306) 评论(0) 推荐(0) 编辑
摘要: freopen("demo.in","r",stdin); freopen("demo.out","w",stdout);fclose(stdin); fclose(stdout); 阅读全文
posted @ 2014-02-08 20:58 forever97 阅读(121) 评论(0) 推荐(0) 编辑
摘要: void qsort(int l,int r){ int i,j,t,mid; mid=b[(l+r)>>1]; i=l; j=r; do{ while (b[i]mid) j--; if (i<=j) { t=b[i]; ... 阅读全文
posted @ 2014-02-08 20:55 forever97 阅读(267) 评论(0) 推荐(0) 编辑
摘要: int scan(int &x){ while(c=getchar(),c'9');x=c-'0'; while(c=getchar(),c>='0'&&c<='9')x=x*10+c-'0';} 阅读全文
posted @ 2014-02-08 20:54 forever97 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 题解:如果知道水面的高度,则直接可以算出水的体积,我们知道水的高度必然在0到最大高度之间,于是在这个区间内进行二分检索即可:#include #include #include using namespace std; #define PI 3.1415926535897932384626 #define exp 1e-9 double solve(double r,double R,double h,double H) { double u = h/H*(R-r) + r; return PI/3*(r*r+r*u+u*u)*h; } int m... 阅读全文
posted @ 2014-02-08 19:58 forever97 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题解:如果三个数组进行查找会发现是一件很困难的事,那么把题目条件转化一下,将a,b数组相加产生一个和数组,之后再在s数组中查找有没有sum-c[i]即可。#include #include using namespace std;int a[505],b[505],c[505];int s[250005];bool find(int x,int l,int r){ if(l>r) return false; int mid=(l+r)/2; if(s[mid]==x) return true; else if(s[mid]>x) return find... 阅读全文
posted @ 2014-02-08 16:14 forever97 阅读(134) 评论(0) 推荐(0) 编辑