[暴力]餐桌

本文探讨了一个有趣的算法问题——如何在一个有障碍物的矩形房间里摆放餐桌以容纳最多的客人。通过使用前缀和的方法并进行暴力枚举,实现了在给定限制条件下的最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

你家刚买了一套新房,想邀请朋友回来庆祝,所以需要一个很大的举行餐桌,餐桌能容纳的人数等于餐桌的周长,你想买一个能容纳最多人的餐桌,餐桌的边必须跟房间的边平行。
给你的房间的设计,计算最多能邀请的客人数。

Input

第一行包含两个整数R和C(1<=R,C<=2000),表示房子的长和宽。
接下来R行每行S个字符(中间没有空格),“.”表示空白区域,“X”表示有障碍物,餐桌所占区域必须是空白的。

Output

输出最多能要求的客人数量。

Sample Input

输入1:
2 2
..
..

输入2:
4 4
X.XX
X..X
..X.
..XX

输入3:
3 3
X.X
.X.
X.X

Sample Output

输出1:
7

输出2:
9

输出3:
3

Data Constraint

Hint

【数据规模】
50%的数据R,C<=400
70%的数据R,C<=1000
100%的数据,R,C<=2000

分析

这题相当奇妙,其实只用搞一个前缀和然后暴力枚举开始点,然后取最大值(具体为什么不超时我也不知道,我也很难讲清,看程序吧)
时间复杂度分摊:O(kn^2)(k是数据中横向间隔的最大数)

#include <iostream>
#include <cstdio>
#define rep(i,a,b) for (i=a;i<=b;i++)
using namespace std;
int r,c;
int f[2001][2001];
void init()
{
    int i,j;
    char q;
    scanf("%d%d",&r,&c);
    rep(i,1,r)
    rep(j,1,c)
    {
        do
        {
            scanf("%c",&q);
        }
        while (q!='.'&&q!='X');
        if (q!='X') f[i][j]=f[i-1][j]+1;
    }
}
void doit()
{
    int i,j,k,s,ans=0;
    rep(i,1,r)
    rep(j,1,c)
    {
        s=f[i][j];
        k=j+1;
        while (f[i][k]!=0&&k<=c)
        {
            ans=max(ans,(s+k-j)*2-1);
            s=min(s,f[i][k]);
            k++;
        }
        ans=max(ans,(s+k-j)*2-1);
    }
    printf("%d",ans);
}
int main()
{
    init();
    doit();
}
内容概要:本文档详细介绍了基于MATLAB实现的无人机三维路径规划项目,核心算法采用蒙特卡罗树搜索(MCTS)。项目旨在解决无人机在复杂三维环境中自主路径规划的问题,通过MCTS的随机模拟与渐进式搜索机制,实现高效、智能化的路径规划。项目不仅考虑静态环境建模,还集成了障碍物检测与避障机制,确保无人机飞行的安全性和效率。文档涵盖了从环境准备、数据处理、算法设计与实现、模型训练与预测、性能评估到GUI界面设计的完整流程,并提供了详细的代码示例。此外,项目采用模块化设计,支持多无人机协同路径规划、动态环境实时路径重规划等未来改进方向。 适合人群:具备一定编程基础,特别是熟悉MATLAB和无人机技术的研发人员;从事无人机路径规划、智能导航系统开发的工程师;对MCTS算法感兴趣的算法研究人员。 使用场景及目标:①理解MCTS算法在三维路径规划中的应用;②掌握基于MATLAB的无人机路径规划项目开发全流程;③学习如何通过MCTS算法优化无人机在复杂环境中的飞行路径,提高飞行安全性和效率;④为后续多无人机协同规划、动态环境实时调整等高级应用打下基础。 其他说明:项目不仅提供了详细的理论解释和技术实现,还特别关注了实际应用中的挑战和解决方案。例如,通过多阶段优化与迭代增强机制提升路径质量,结合环境建模与障碍物感知保障路径安全,利用GPU加速推理提升计算效率等。此外,项目还强调了代码模块化与调试便利性,便于后续功能扩展和性能优化。项目未来改进方向包括引入深度强化学习辅助路径规划、扩展至多无人机协同路径规划、增强动态环境实时路径重规划能力等,展示了广阔的应用前景和发展潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值