poj1054

枚举—案例(讨厌的青蛙poj1054) 问题描述          在韩国,有一种小的青蛙。每到晚上,这种青蛙会跳越稻田,从而踩踏稻子。农民在早 上看到被踩踏的稻子,希望找到造成最大损害的那只青蛙经过的路径。每只青蛙总是沿着一 条直线跳越稻田,而且每次跳跃的距离都相同,如图 所示。  稻田里的稻子组成一个栅格,每棵稻子位于一个格点上,如图  所示。 而青蛙总是从稻田的一侧跳进稻田,然后沿着某条直线穿越稻田,从另一侧跳出去, 阅读详情

【题意】

有一个r*c的方格,青蛙会以相同的向量v=(x,y)跳过,跳过的地方留下痕迹,青蛙在格子外哪里出发都有可能,问有最多有多少只青蛙。

【输入】

r c

n

以下n行每行描述一个点。

【输出】

最多有多少只青蛙。

比较暴力……

program poj1054;
type
  point=record
          x,y:longint;
        end;
var
  n,r,c,i,j,k,ans,x,y:longint;
  v:array [0..5001,0..5001] of boolean;
  p:array [0..5001] of point;
function max (a,b:longint):longint;
begin
  if a>b then exit(a)
         else exit(b);
end;
procedure swap (var a,b:point);
var
  i:point;
begin
  i:=a;
  a:=b;
  b:=i;
end;
procedure qsort (s,e:longint);
var
  i,j:longint;
  k:point;
begin
  if s>=e then exit;
  i:=s;
  j:=e;
  k:=p[(s+e) div 2];
  while i<=j do
    begin
      while (p[i].x<k.x)or((p[i].x=k.x)and(p[i].y<k.y)) do inc(i);
      while (p[j].x>k.x)or((p[j].x=k.x)and(p[j].y>k.y)) do dec(j);
      if i>j then break;
      swap(p[i],p[j]);
      inc(i);
      dec(j);
    end;
  qsort(s,j);
  qsort(i,e);
end;
function dfs (x,y,xx,yy:longint):longint;
var
  k:longint;
begin
  k:=2;
  while (x+xx>0)and(x+xx<=r)and(y+yy>0)and(y+yy<=c) do
    if v[x+xx,y+yy] then
      begin
        inc(k);
        x:=x+xx;
        y:=y+yy;
      end
                    else
      exit(0);
  exit(k);
end;
begin
  read(r,c);
  read(n);
  fillchar(v,sizeof(v),false);
  for i:=1 to n do
    begin
      read(p[i].x,p[i].y);
      v[p[i].x,p[i].y]:=true;
    end;
  qsort(1,n);
  ans:=2;
  for i:=1 to n-1 do
    for j:=i+1 to n do
      begin
        x:=p[j].x-p[i].x;
        y:=p[j].y-p[i].y;
        if (p[i].x-x>0)and(p[i].y-y>0)and
        (p[i].x-x<=r)and(p[i].y-y<=c) then continue;
        if (p[i].x+(ans-1)*x>0)and(p[i].x+(ans-1)*x<=r)
        and(p[i].y+(ans-1)*y>0)and(p[i].y+(ans-1)*y<=c) then
          ans:=max(ans,dfs(p[j].x,p[j].y,x,y));
      end;
  if ans=2 then writeln(0)
           else writeln(ans);
end.





POJ1054讨厌的青蛙 POJ1054讨厌的青蛙,利用枚举算法解题,值得一做。 立即下载

相关推荐

POJ 1054 The Troublesome Frog.rar

详细解释,详细源代码以及精准的文字解释,VC上完成的,用C++,不同做法

POJ 1054 暴力

题意 传送门 POJ 1054 题解 枚举顶点对作为线段端点 O(n2)O(n^2)O(n2) ,只有线段最长的边才是可能解;以端点间距为步长,通过判断端点是否在边界上(路径横穿地图),即可判断是否需要从另一个端点开始统计点数;若一开始使顶点有序,可只判断一侧端点。 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue&g

neweryyy的博客 447

基于51单片机的多功能计算器全套设计

当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且人脑比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器设计开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。 本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用5×8矩阵键盘,可以进行加、减、乘、除等十几种数字运算,同时支持括号

runweipa的博客 1743

POJ 1054 The Troublesome Frog(dp+剪枝)

题意:好多青蛙祸害庄稼,已知一个R*C的稻田。给出被青蛙踩到的庄稼的坐标,已知一只青蛙的跳跃距离是一定的,它从稻田外踩过稻田中的M个点然后又跳出稻田,求某只青蛙踩出的M最大值。(也就是说一只青蛙可以踩出一条线来。)小于三的情况直接输出0;

I am a slow walker, but I never walk backwards! 1666

蜻蜓fm爬虫python

本文介绍了一个用于下载蜻蜓FM音频书籍的Python脚本实现。该脚本主要功能包括:1)通过账号密码登录获取认证信息;2)从目标书籍主页提取版本信息;3)获取书籍节目总数和分页信息;4)生成节目下载链接(使用HMAC-MD5加密算法生成请求签名);5)下载音频文件并保存。脚本采用多种反爬措施:设置User-Agent模拟浏览器行为、使用动态时间戳、HMAC-MD5签名验证等,有效规避简单的反爬机制。整个流程包括登录认证、获取书籍信息、生成下载链接和保存音频文件四个步骤,实现自动化批量下载功能。

野猫炫的博客 913

Visual studio 2013 配置 Halcon 13 (非抄袭)

Visual studio 2013 配置 Halcon 13.0.2.2 (其他版本适用) 针对网上抄袭的配置方法均不可用,写了一篇亲试可行的配制方法。如下: 1.下载Halcon安装后(C:\Program Files\MVTec\HALCON-13.0) 添加环境变量,(按下win按键,键入“环境变量”,出现 “编辑系统环境变量”后按下enter即可打开,下方找到“环境变量”按钮)的系...

huyanjackson的专栏 1042

POJ 1054 恼人的青蛙 [ 枚举+剪枝 ]

枚举 + 剪枝

小威的专栏 2907

Gitlab+Jenkins+Docker+Harbor+K8s+Rancher集群搭建CICD平台

本文以诺依项目为例详细记录了Kubernetes集群的部署过程以及配套DevOps环境的搭建。主要内容包括:1) 配置8个节点的软硬件环境;2) 基础环境准备(网络、防火墙、Docker等);3) 三节点Kubernetes集群部署;4) GitLab代码仓库安装;5) Harbor私有镜像仓库搭建;6) Jenkins持续集成工具配置;7) 基于若依项目的CI/CD实践;8) Rancher集群管理工具部署。

hickman2023的博客 1205

POJ--1054--The Troublesome Frog

题目大意:给出一点矩形,整数坐标上有点,问这些点连成的最长的直线上面有几个点,还要求这些点之间的距离相同,而且直线两端的点的下一个点是在矩阵的外面, 解题思路,枚举加剪枝。 反思,其实一般的思路都可以想到,剪枝的要求就比较难想,一个枚举题目的重点往往在剪枝上面。 #include #include #include #include #define eps 1e-10 #define max

WoniuGe 602

Flutter + shorebird 热更新+自定义cdn下载

本文介绍了如何优化Flutter热更新方案Shorebird在国内网络环境下的使用体验。Shorebird默认使用海外CDN存在下载慢、连接不稳定等问题,建议将补丁包上传至国内CDN(如阿里云OSS)。文章详细讲解了Shorebird环境配置、项目集成、构建发布流程,并重点说明了如何修改客户端代码实现自定义补丁下载逻辑。通过替换默认下载器,将补丁下载地址指向国内CDN,可显著提升下载速度和稳定性。这种方案既保留了Shorebird的热更新能力,又解决了国内网络环境下的痛点,适合国内企业部署使用。

sir_Hu的博客 771

Type-C转DP1.4转C双向互传转接线方案

Type-C转DP双向互转方案的核心在于利用Type-C接口中的Alt Mode(交替模式)功能。通过利用Type-C接口的Alt Mode功能,该方案实现了Type-C接口与DP接口之间的双向互传,极大地丰富了用户的视觉体验。在选择Type-C转DP双向互转方案时,用户需要关注兼容性、性能需求、线缆长度和品牌等因素,以确保获得最佳的传输质量和使用体验。因此,Type-C转DP双向互转方案应运而生,旨在实现Type-C接口与DP接口之间的无缝连接,满足用户对高效能和高清晰度视频传输的需求。

m0_70875024的博客 4978

【poj 1054】The Troublesome Frog 题意&题解&代码(C++)

poj 暴力

曾经追梦的happy时光 1022

基于Cesium移动的天空云

天空中的云朵也算是一种天气气候的效果,它能更加逼真的反映当前的天气状况,可以是白云朵朵,也可以是乌云密布,结合其他天气效果,可以组合形成较为真实的三维可视化场景。

星云数海的博客,一个专注GIS十多年的GISer人。 448

POJ 1054 Java: The Troublesome Frog

题目描述:http://poj.org/problem?id=1054 本题使用枚举的思想。但是单纯枚举解得范围太大,我们需要在对可能的范围进行剪枝。我们可以先选中一个点作为起始点,另一个点做第二个点,这样就可以确定一条直线。再对这条直线是否符合剪枝条件进行考察,先来可以下剪枝的条件有哪些: 1、既然选中了起始点,那么根据其与第二个点的步长,可以知道上一步一定是在田外的,否则就不能成为

卡卡罗特 797

动态视频目标追踪系统:基于YOLOv11+DeepSORT的从入门到实战全流程指南

仅保留车辆类别(假设车辆类别ID为2)if det.class_index == 2: # 车辆类别ID通过本指南,你已完成从环境搭建数据准备模型训练到追踪系统与UI界面的全流程,搭建了一套完整的动态视频目标追踪系统。该系统在安防监控、交通管理等场景中具有实用价值,可实现目标的实时稳定追踪。未来,你可尝试结合多模态特征(如目标外观+运动特征)提升追踪鲁棒性,或探索轻量化模型部署(如TensorRT加速),让系统在边缘设备上也能高效运行。

LXY_LOVE36的博客 142

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

poj 1054 The Troublesome Frog 枚举

//poj 1054 //sep9 #include #include using namespace std; struct NODE { int x,y; }p[5012]; bool vis[5012][5012]; int n,r,c; int cmp(NODE a,NODE b) { return a.y!=b.y?a.y<b.y:a.x<b.x; } int main() {

sepNINE的专栏 903

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

poj 1054 The Troublesome Frog

http://poj.org/problem?id=1054 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define maxn 5001 5 using namespace std; 6 7 int r,c,n,x2,y2; 8 ...

weixin_30519071的博客 112

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

(POJ 1054)The Troublesome Frog <暴力枚举+剪枝 || DP>

题目链接:http://poj.org/problem?id=1054题意: 给定一个行数和列数固定的网格,再给定若干个点,这些点是使用矩形上网格线交叉点的坐标来唯一确定的R行C列的网格,左上角的坐标为(1,1)右下角的坐标为(R,C),问给定的这些点能够组成最长可能路径是多长. 路径的定义的如下的:由若干连续且间隔相等的点组成,方向可任意,起始点和结束点均在网格之外的任意空间.也就是只要满足网格

STILLxjy 790

POJ1054 The Troublesome Frog

题目来源:http://poj.org/problem?id=1054 题目大意:   有一种青蛙在晚上经过一片稻田,在庄稼上跳跃,会把庄稼压弯。这让农民很苦恼。我们希望通过分析青蛙跳跃的路径,找出对稻田造成最大损害的青蛙。青蛙跳跃时总是沿着直线并且步长均匀,但不同青蛙可能步长或方向不一样。如下图所示:   稻田庄稼是均匀地种在矩形网格交点处的,如下左图所示。青蛙总是会完全穿过这片...

weixin_30375427的博客 124

[搜索+剪枝/]poj1054 The Troublesome Frog

poj1054 The Troublesome Frog 题意: 一块矩形农田,每只蛤会以不同的方式(横/竖/斜)不同的步距跳跃,如果被蛤踩到庄稼就会受损,请问个体蛤损坏庄稼的最大值 思路: 两种思路:搜索+剪枝/dp+hash 枚举前两步,确定青蛙的步距(确定斜率),然后搜索,比较慢 听别人说还有一种思路是dp,应该更高效,但是没想出来…… 代码1(搜索+剪枝): #incl

soundwave_的博客 455

poj 1054 考思路的动规

<br /><br />poj 1054 <br />题意:<br />在一个矩阵方格里面,青蛙在里面跳,但是青蛙每一步都是等长的跳,从一个边界外<br /> <br />,跳到了另一边的边界外,每跳一次对那个点进行标记。<br />现在给你很多青蛙跳过后的所标记的所有点,那请你从这些点里面找出一条路径里面<br /> <br />出现过的标记点最多。<br /> <br />读题的时候有两个经典条件是没有读清楚的。<br />1、 要考虑的只能是路径里面标记点大于3的路径<br />2、 是从边界外跳进,

mindmb的专栏 865

poj-1054-The Troublesome Frog

题目地址http://poj.org/problem?id=1054题目大意 青蛙踩稻田里的水稻,青蛙只能直线跳,并且每一跳都相等 给出稻田里被踩倒得水稻,求青蛙中踩倒最多水稻的数目 解题思路 枚举,取出二个点,当做起始点 剪枝 Code#include <stdio.h> #include <iostream> #include <stdlib.h> #include <string.h> #in

todo 352

poj-1054

//25008K 1891MS G++ #include #include #include #include using namespace std; int W; int H; const int MAX = 5010; struct Flatten { int x; int y; }; typedef struct Flatten Flatten; Flatten fl

fyfcauc的专栏 789

POJ1054 TheTroubleFrog

The Troublesome FrogTime Limit: 5000MS Memory Limit: 100000K Total Submissions: 11152 Accepted: 3324 Case Time Limit: 500MS DescriptionIn Korea, the naughtiness of the cheonggaeguri, a small frog

纯牛奶 513

poj1054The Troublesome Frog<DP>

链接 :http://poj.org/problem?id=1054 题意: 有一个r*c的方格,青蛙会以相同的向量v=(x,y)跳过,跳过的地方留下痕迹,青蛙在格子外哪里出发都有可能,问有最多有多少只青蛙; 思路: 先把点排序, 使其有序化, 然后枚举任意两点所在的直线, 看有多少点落在直线上, 求其最大值; View Code 1 #include <iostrea...

weixin_30409849的博客 101
上一篇: poj1038
下一篇: poj1061
weixinding
博客等级 码龄15年 39粉丝 181原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值