• poj1054The Troublesome Frog


    链接

    想O(n*n)的DP  怎么想都超内存 看讨论有说hash+DP过的 实现比较繁琐

    大部分直接暴力过了 

    直接枚举每个i j 与他们在一条线上的点 是不是给出的点 

    注意它必须能跳进和跳出 

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 #define N 5010
     8 bool flag[N][N];
     9 struct node
    10 {
    11     int x,y;
    12 }p[N];
    13 bool cmp(node a,node b)
    14 {
    15     if(a.x==b.x)
    16     return a.y<b.y;
    17     return a.x<b.x;
    18 }
    19 int main()
    20 {
    21     int i,j,k,n,r,c;
    22     while(scanf("%d%d",&r,&c)!=EOF)
    23     {
    24         memset(flag,0,sizeof(flag));
    25         scanf("%d",&n);
    26         for(i = 1; i <= n ;i++)
    27         {
    28             scanf("%d%d",&p[i].x,&p[i].y);
    29             flag[p[i].x][p[i].y] = 1;
    30         }
    31         sort(p+1,p+n+1,cmp);
    32         int ans=0,ff=1;
    33         for(i = 1 ; i <= n ; i++)
    34             for(j = i+1; j <= n ; j++)
    35             {
    36                 int tx = p[j].x-p[i].x;
    37                 int ty = p[j].y - p[i].y;
    38                 int ox = p[j].x;
    39                 int oy = p[j].y;
    40                 if(p[i].x-tx>=1&&p[i].x-tx<=r&&p[i].y-ty>=1&&p[i].y-ty<=c)
    41                 continue;
    42                 ff = 1;
    43                 for(k = 2 ; ; k++)
    44                 {
    45                     ox+=tx;
    46                     oy+=ty;
    47                     if(ox>r||oy>c||ox<1||oy<1)
    48                     break;
    49                     if(!flag[ox][oy])
    50                     {
    51                         ff = 0;
    52                         break;
    53                     }
    54                 }
    55                 if(ff)
    56                 ans = max(ans,k);
    57             }
    58         if(ans>2)
    59         printf("%d
    ",ans);
    60         else
    61         printf("0
    ");
    62     }
    63     return 0;
    64 }
    View Code
  • 相关阅读:
    Linux与Mac通信
    练习
    删除重复文件
    解压压缩文件
    查询压缩文件的大小
    修改文件夹和文件名字
    删除文件和文件夹
    移动文件和文件夹
    shutil复制文件夹
    shutil复制文件
  • 原文地址:https://www.cnblogs.com/shangyu/p/3282119.html
Copyright © 2020-2023  润新知