①使用binary_search前要先保证有序

②binary_search函数仅返回true或false

③binary_search(first element, laste lment + 1, data to search)

 #include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <algorithm>
using namespace std;
struct PLANT{
int x, y;
};
PLANT map[];
int r, c, num;
int max_num; bool operator < (const PLANT & p1, const PLANT & p2){
if(p1.x == p2.x) return p1.y < p2.y;
return p1.x < p2.x;
} int function(int dx, int dy, int x, int y){
int flag = ;
while(x >= && x <= r && y >= && y <= c){
PLANT temp;
temp.x = x;
temp.y = y;
if(!binary_search(map, map+num, temp)) return ;
x += dx;
y += dy;
++flag;
}
return flag;
}
int main(){
int i, j, k, t;
int num_x, num_y;
int flag;
scanf("%d%d",&r,&c);
scanf("%d",&num);
for(i = ; i < num; ++i) scanf("%d%d",&map[i].x,&map[i].y); sort(map, map+num);
max_num = ; for(i = ; i < num; ++i){
for(j = i + ; j < num; ++j){
int dx = map[j].x - map[i].x;
int dy = map[j].y - map[i].y;
int px = map[i].x - dx;
int py = map[i].y - dy;
if(px >= && px <= r && py >= && py <= c) continue; if(map[i].x + max_num * dx > r) continue;
int pY = map[i].y + max_num * dy;
if(pY > c || pY < ) continue; px = dx + map[j].x;
py = dy + map[j].y;
int flag = ;
while(px >= && px <= r && py >= && py <= c){
PLANT temp;
temp.x = px;
temp.y = py;
if(!binary_search(map, map+num, temp)){
flag = ;
break;
}
px += dx;
py += dy;
++flag;
}
max_num = max(max_num, flag);
}
}
if(max_num == ) printf("0\n");
else printf("%d\n",max_num);
return ;
}

POJ1054 枚举【STL__binary_search()_的应用】的更多相关文章

  1. 零基础逆向工程40_Win32_14_枚举窗口_模拟鼠标键盘

    1 查找窗口 1.1 代码案例 //查找指定窗口 TCHAR szTitle[MAX_PATH] = {0}; HWND hwnd = ::FindWindow(TEXT("#32770&q ...

  2. 【t081】序列长度(贪心做法)

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个整数序列,我们不知道她的长度是多少(即序列中整数的个数),但我们知道在某些区间中至少有多少个整数 ...

  3. [loj2586]选圆圈

    下面先给出比较简单的KD树的做法-- 根据圆心建一棵KD树,然后模拟题目的过程,考虑搜索一个圆 剪枝:如果当前圆[与包含该子树内所有圆的最小矩形]都不相交就退出 然而这样的理论复杂度是$o(n^2)$ ...

  4. BZOJ_1406_[AHOI2007]密码箱_枚举+数学

    BZOJ_1406_[AHOI2007]密码箱_枚举+数学 Description 在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子 ...

  5. .Net基础篇_学习笔记_第八天_复杂数据类型(常量/枚举/结构)

    1.常量: 声明的常量的语法:const 变量类型 变量名=值;最大的特点就是,声明了常量后,就不能再被重新赋值. 2.枚举 语法:[public] enum 枚举名{ 值1, 值2, 值3, ... ...

  6. C#(结构体_枚举类型)

        结构体一般定义在Main函数上面,位于Class下面,作为一个类:一般情况Struct定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public代表公用变量. 用法 1 ...

  7. C#_枚举类型

     C#中的枚举是名/值对的数据类型,下面是自定义的军衔等级的枚举 //定义枚举 enum MilitaryRank { Commander, ArmyCorpCommander, Military ...

  8. c#中[Flags] 枚举类型定义问题_百度知道

    [Flags]的微软解释是“指示可以将枚举作为位域(即一组标志)处理.”其实就是在编写枚举类型时,上面附上Flags特性后,用该枚举变量是既可以象整数一样进行按位的“|”或者按位的“&”操作了 ...

  9. C# 语言规范_版本5.0 (第14章 枚举)

    1. 枚举 枚举类型 (enum type) 是一种独特的值类型(第 4.1 节),它用于声明一组命名的常量. 下面的示例 enum Color { Red, Green, Blue } 声明一个名为 ...

随机推荐

  1. jar 打包后的文件执行时出现错误:RunJar jarFile [mainClass] args...

    修改别人的jar包中的配置文件,然后再打包后执行出错:RunJar jarFile [mainClass] args... 经过分析,是因为打包时需要设置mainClass,可以通过如下方法: jar ...

  2. 常见排序算法C++总结

    看了总结图,我这里就总结一下 直接插入排序,冒泡排序,快速排序,堆排序和归并排序,使用C++实现 重新画了总结图 直接插入排序 整个序列分为有序区和无序区,取第一个元素作为初始有序区,然后第二个开始, ...

  3. hdoj 3549 Flow Problem(最大网络流)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 思路分析:该问题为裸的最大网络流问题,数据量不大,使用EdmondsKarp算法求解即可:需要注 ...

  4. Sumsets(完全背包)

    Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 15045   Accepted: 5997 Descrip ...

  5. phpmyadmin出现空password登录被禁止

    在Windows或者Linux下mysql安装后默认的password为空,又当我们又安装了mysql的管理工具 phpmyadmin后登陆时出现"空password登陆呗禁止(參见同意pa ...

  6. Objective-c 程序结构

    类是Objective-c的核心,Objective-c程序都是围绕类进行的.Objective-c程序至少包含以下三个部分: 1.类接口:定义了类的数据和方法,但是不包括方法的实现代码. 2.类实现 ...

  7. js数组练习

    //查找数组对象中 age 大于 18 对象 function filterAdult(arr) { return arr.filter(function(item, index, array) { ...

  8. char*与char[]

    char *s1="hello";   // 指向常量区 char s2[]="hello";   // 指向数组的内存空间 char *s1 的s1是指针,指 ...

  9. setInterval(code, time)中code传递参数办法

    1.使用setInterval的场景 有时我们需要隔一定的时间执行一个方法,这时就会用到setInterval,但是由于这个方法是浏览器模拟出的Timer线程,在调用我们方法时不能为其传递参数. 2. ...

  10. 解决Sublime Text3莫名的中文乱码问题

    有好几回用Sublime Text3写着中英混杂的文字的时候,会突然就弹出警告说什么编码不行,然后点击确定后,原来的中文全都乱码了: 然后即使按ctrl+z撤回也没用,重新打开也没用,用记事本的转换a ...