摘要: 二分查找,思想很简单,在很多书中都有介绍,如果查找的元素一定存在序列中,实现起来简单一些。但是有的时候元素并不存在,就要根据题目中的要求,去判断是去求上界还是去求下界。以下内容参考此博客,这个博客讲的很不错,参考了一下。以下所有的题目,都是递增序列。 HDU 4217 Data Structure?题目大意就是让把第几大的元素找到,然后把这个元素删去,算出删去元素的和。这个题的一种解法是用树状数组记录,然后中间用到二分,这个时候因为getsum(i)存的是前i个数有有几个元素,所以第一个等于关键值的i,才是要求的结果。最后str是我们要求的结果。关键代码:1 while(str < en 阅读全文
posted @ 2012-08-05 20:35 Naix_x 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题目链接这是线段树的模版题。我用二分查找做的,自己二分太弱了,最近一直发现我不会写二分,在我还没有调试出二分查找求上界的时候,队友已经用线段树过了。。。。又托了好久,今天想起来,系统的学习一下二分。 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 struct node 5 { 6 __int64 da; 7 int id; 8 }p[200001]; 9 int cmp(const void *a,const void *b)10 {11 return (*(struct 阅读全文
posted @ 2012-08-05 17:25 Naix_x 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题目链接简单求反射点。。。这种几何题,写成程序怎么这么容易错啊。4Y。。。中间各种小错误。。#include <stdio.h>#include <string.h>#define eps 0.00000001double xmi,ymi,xx,yy;void line(double x1,double y1,double x2,double y2,double xs,double ys)//求(xs,ys)在直线上的对称点{ double k1,k2,b1,b2; if(y2 == y1) { xmi = xs; ymi = 2*y1 - ys;... 阅读全文
posted @ 2012-08-05 14:01 Naix_x 阅读(166) 评论(0) 推荐(0) 编辑