POJ1054 枚举【STL__binary_search()_的应用】

①使用binary_search前要先保证有序

②binary_search函数仅返回true或false

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

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 #include <iostream>
 5 #include <algorithm>
 6 using namespace std;
 7 struct PLANT{
 8     int x, y;
 9 };
10 PLANT map[5001];
11 int r, c, num;
12 int max_num;
13
14 bool operator < (const PLANT & p1, const PLANT & p2){
15     if(p1.x == p2.x)    return p1.y < p2.y;
16     return p1.x < p2.x;
17 }
18
19 int function(int dx, int dy, int x, int y){
20     int flag = 2;
21     while(x >= 1 && x <= r && y >= 1 && y <= c){
22         PLANT temp;
23         temp.x = x;
24         temp.y = y;
25         if(!binary_search(map, map+num, temp))  return 0;
26         x += dx;
27         y += dy;
28         ++flag;
29     }
30     return flag;
31 }
32 int main(){
33     int i, j, k, t;
34     int num_x, num_y;
35     int flag;
36     scanf("%d%d",&r,&c);
37     scanf("%d",&num);
38     for(i = 0; i < num; ++i)    scanf("%d%d",&map[i].x,&map[i].y);
39
40     sort(map, map+num);
41     max_num = 2;
42
43     for(i = 0; i < num; ++i){
44         for(j = i + 1; j < num; ++j){
45             int dx = map[j].x - map[i].x;
46             int dy = map[j].y - map[i].y;
47             int px = map[i].x - dx;
48             int py = map[i].y - dy;
49             if(px >= 1 && px <= r && py >= 1 && py <= c)    continue;
50
51             if(map[i].x + max_num * dx > r)   continue;
52             int pY = map[i].y + max_num * dy;
53             if(pY > c || pY < 1)    continue;
54
55             px = dx + map[j].x;
56             py = dy + map[j].y;
57             int flag = 2;
58             while(px >= 1 && px <= r && py >= 1 && py <= c){
59                 PLANT temp;
60                 temp.x = px;
61                 temp.y = py;
62                 if(!binary_search(map, map+num, temp)){
63                     flag = 0;
64                     break;
65                 }
66                 px += dx;
67                 py += dy;
68                 ++flag;
69             }
70             max_num = max(max_num, flag);
71         }
72     }
73     if(max_num == 2)    printf("0\n");
74     else    printf("%d\n",max_num);
75     return 0;
76 }

POJ1054 枚举【STL__binary_search()_的应用】,布布扣,bubuko.com

时间: 2024-10-11 13:36:37

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

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

1 查找窗口 1.1 代码案例 //查找指定窗口 TCHAR szTitle[MAX_PATH] = {0}; HWND hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书 IP Messenger")); if(hwnd != NULL) { //修改窗口标题 ::SetWindowText(hwnd,"新的窗口标题"); } else { ::MessageBox(NULL,TEXT("窗口没

结构体_枚举类型

namespace 结构体_枚举类型{    class Program    {        struct jiegouti        {            public int fenshu;            public string name;            public string kecheng;        }        static void Main(string[] args)        {            jiegouti a =

黑 马 程 序 员_视频学习总结&lt;C语言&gt;----06 枚举

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.枚举的概念 枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数.当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型.比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天.夏天.秋天.冬天.   二.枚举类型的定义 一般形式为:enum 枚举名 {枚举元素1,枚举元素2,……}; en

网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型

C语言程序设计进阶_第一周:数据类型:整数类型.浮点类型.枚举类型 1.0数据类型 1.1整数类型 1.2浮点类型 1.3逻辑类型 1.4类型转换和条件运算 1.0数据类型 1 整数 char(%c), short, int(%d), long(%ld), long long(C99) 2 浮点数 float(%f), double(%lf), long double(C99) 3 逻辑 bool(C99) 4 指针 5 自定义类型 所表达的数的范围:char<short<int<flo

常量_枚举_结构

namespace 常量_枚举_结构{ //将枚举声明到命名空间的下面,类的上面. //美剧就是一个变量类型,只是他声明,赋值,使用的方式与那些普通的不一样 //定义了一个枚举 public enum Gender { 男, 女 } public enum QQState { 在线, 离线, 隐身, 忙碌 } class Program { static void Main(string[] args) { //const 类型 赋值 //const int num = 20;// 常量不能够重

UVA 11889-Benefit(数学_快速枚举因子)

Recently Yaghoub is playing a new trick to sell some more. When somebody gives him A Tomans, he who never has appropriate changes, asks for B Tomans such that lowest common multiple of A and B equals to C and he will pay back a round bill. Or otherwi

8.3结构体_枚举类型

    结构体一般定义在Main函数上面,位于Class下面,作为一个类:一般情况Struct定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public代表公用变量. 用法 1)在Main函数外面定义了一个student类型的结构体,在Main主函数中使用: 2)然后为里面的每个元素赋值,结构体名+点+结构体里面变量名称=值. 3)赋值之后完成之后进行打印. struct Student {//定义一组变量public int no;public string name;

黑马程序员_枚举总结

/* 1.枚举:枚举就是一个类,也即一种数据类型,引用数据类型.只不过是一个特殊的类.这个类的引用(变量)或者这种数据类型的变量(引用),它的值是由定义该数据类型的人来指定的,即它的取值是在枚举中定义好的,就那么几个值,如果不是这些列出来的值,编译器在编译的时候就会报错. 2.枚举的好处:将一种数据类型的所有取值限定在指定范围内.使得该数据类型的变量在取值时,不会出现非法赋值的情况,如果有,则可以在编译时期就被发现,避免了一些错误赋值导致的问题发生. 3.枚举的定义: enum 枚举类型名 //

[poj1054] The Troublesome Frog 暴力枚举+剪支

The Troublesome Frog Time Limit: 5000MS Memory Limit: 100000K Total Submissions: 11339 Accepted: 3383 Case Time Limit: 500MS Description In Korea, the naughtiness of the cheonggaeguri, a small frog, is legendary. This is a well-deserved reputation, b