洛谷P11464 支配剧场

支配剧场

题目背景

May all the beauty be blessed.

题目描述

布洛妮娅和符华在寻找琪亚娜的途中,被支配之律者困在了支配剧场的高塔回廊之中。布洛妮娅敏锐地发现,虚无回廊是由一些支配之律者生成的积木构成的,只要击碎其中一些积木,就能解除空间的限制,让她们逃出高塔回廊。

具体来说,整个高塔回廊可以由一张高为 n n n,宽为 m m m 的地图表示。第 1 1 1 行为空间的最高点,第 n n n 行为空间的最低点。高塔由 K K K 块积木堆叠而成,符华每次可以击碎高塔中任意的积木,但必须保证高塔不会倒塌(否则她们会落入虚数空间),以及击碎积木后,高塔回廊的高度不变(即不能把最顶层的积木全部击碎)。

如果一块积木最底层的长度是 L L L,那么当且仅当其最底层与地板或者其他积木的接触面积 L ′ L' L 满足 L ′ ≥ ⌈ L 2 ⌉ L' \ge \left\lceil \frac{L}{2} \right\rceil L2L 时,这块积木不会失去平衡。当所有积木不失去平衡时,我们认为整个高塔回廊不会倒塌

积木的最底层长度被定义为积木行坐标最大的方块总个数。例如:

0 1 0
1 1 1
0 1 0

这张图中, 1 1 1 号积木的最底层长度是 1 1 1,因为其所占的格子中,行坐标最大的只有一个格子 ( 3 , 2 ) (3,2) (3,2)

请帮布洛妮娅计算一下,符华最多能击碎多少个积木?

输入格式

第一行两个整数 n , m n,m n,m, 表示地图范围。

接下来 n n n 行,每行 m m m 个整数。第 i i i 行第 j j j 个整数 a i , j a_{i,j} ai,j,表示第 i i i 行第 j j j 列的格子属于第 a i , j a_{i,j} ai,j 块积木。若 a i , j = 0 a_{i,j} = 0 ai,j=0,则这个位置是空的。

输出格式

一行一个整数,表示符华能击碎的最多的积木块数。

样例 #1

样例输入 #1

5 3
2 2 2
2 3 1
2 3 1
2 3 1
1 1 1

样例输出 #1

1

样例 #2

样例输入 #2

5 5
0 0 2 2 2
3 3 2 2 2
3 3 3 2 2
1 2 2 2 4
1 1 1 2 4

样例输出 #2

3

提示

1 ≤ n , m ≤ 30 1\leq n,m\leq 30 1n,m30,积木块数 K K K 满足 1 ≤ K ≤ 15 1\leq K \leq 15 1K15,且保证高塔初始一定不会倒塌,同一块积木一定是一个四联通块。

【样例 1 解释】

符华可以击碎 3 3 3 号积木,这不会导致高塔坍塌,也不会降低高塔的高度。可以证明没有更优的方案。

【样例 2 解释】

可以击碎 1 , 3 , 4 1,3,4 1,3,4 号积木。

思路:

纯唐型,检查了一个小时为什么会WA,最后发现题目条件是要求塔的高度不能降低而不是塔高要为n。
n,m都较小,所以不需要太多算法,直接暴力dfs枚举可能删除积木的情况即可,就是实现的细节可能比较多…虽然考场上也没仔细想这个题,只觉得麻烦就放弃了去做别的,然后别的也没做出来。
另外,除夕夜了自己还在补题~,单纯是因为闲得无聊,那就祝看到这里的人新年快乐,蛇年大吉。

#include <bits/stdc++.h>
#define endl '\n'
typedef long long ll;
using namespace std;
int a[35][35];
int k[50],bj[50];
vector<int> c;
int ans  = 0 ;
int n,m,cnt=0;
vector<int>bh;
int cbh[50];
int hst=0;
bool check(){// cout<<"check:";// for(int e:c)cout<<e<<" ";// cout<<endl;if(c.size()==0)return false;bool bd = 0;for(int i=1;i<=m;i++){if(bj[a[hst][i]]){bd=1;// cout<<"wd"<<endl;break;}}if(!bd) return false;for(int e : c){if(k[e]==n)continue;int cd=0,cj=0;    for(int i=1;i<=m;i++){ if(a[k[e]][i] == e){cd++;if(bj[a[k[e]+1][i]])cj++;}}// cout<<e<<" "<<cj<<" "<<cd<<endl;if(cj*2<cd){bd=0;break;}}return bd;
}void dfs(int cz,int x){if(x==cnt){if(cz!=0 && check()){// cout<<"-cg : "<<cnt-cz<<endl;ans = max(ans,cnt-cz);}return;};bj[bh[x+1]]=1;c.push_back(bh[x+1]);dfs(cz+1,x+1);bj[bh[x+1]]=0;c.pop_back();dfs(cz,x+1);
}signed main() {cin.tie(0)->ios::sync_with_stdio(0);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];if(hst ==0 && a[i][j]!=0 )hst = i;if(cbh[a[i][j]]==0){bh.push_back(a[i][j]);cbh[a[i][j]]=1;}}}if(cbh[0]==0)bh.push_back(0);cnt = bh.size()-1;sort(bh.begin(),bh.end());for(int i=n;i>=1;i--){for(int j=1;j<=m;j++){if(k[a[i][j]] == 0){k[a[i][j]]=i;}}}dfs(0,0);cout<<ans;// cout<<endl<<a[1][5]<<" "<<bj[a[1][5]];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/69549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

http3网站的设置(AI不会配,得人工配)

堡塔PHP项目中配置nginx1.26.0设置http3协议 # 文件所在服务器中的路径 /www/server/nginx/conf/nginx.confuser www www; worker_processes auto; error_log /www/wwwlogs/nginx_error.log crit; pid /www/server/nginx/logs/nginx.pid; worker_rlimit_nofile 512…

Python-基于PyQt5,json和playsound的通用闹钟

前言&#xff1a;刚刚结束2024年秋季学期的学习&#xff0c;接下来我们继续来学习PyQt5。由于之前我们已经学习了PyQt5以及PyUIC,Pyrcc和QtDesigner的安装&#xff0c;配置。所以接下来我们一起深入PyQt5&#xff0c;学习如何利用PyQt5进行实际开发-基于PyQt5&#xff0c;json和…

预测不规则离散运动的下一个结构

有一个点在19*19的平面上运动&#xff0c;运动轨迹为 一共移动了90步&#xff0c;顺序为 y x y x y x 0 17 16 30 10 8 60 15 15 1 3 6 31 10 7 61 14 15 2 12 17 32 9 9 62 16 15 3 4 12 33 10 9 63 18 15 4 3 18 34 15 12 6…

固有频率与模态分析

目录 引言 1. 固有频率&#xff1a;物体的“天生节奏” 1.1 定义 1.2 关键特点 1.3 实际意义 2. 有限元中的模态分析&#xff1a;给结构“体检振动” 2.1 模态分析的意义 2.2 实际案例 2.2.1 桥梁模态分析 2.2.2 飞机机翼模态分析 2.2.3 具体事例 3. 模态分析的工具…

供应链系统设计-供应链中台系统设计(十)- 清结算中心概念片篇

综述 我们之前在供应链系统设计-中台系统设计系列&#xff08;五&#xff09;- 供应链中台实践概述文章中针对中台到底是什么进行了描述&#xff0c;对于中台的范围也进行划分&#xff0c;如下图所示&#xff1a; 关于商品中心&#xff0c;我们之前用4篇文章介绍了什么是商品中…

C27.【C++ Cont】时间、空间限制和STL库的简单了解

&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;春节篇&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8; 目录 1.竞赛中的…

步进电机加减速公式推导

运动控制梯形速度曲线相关算法请参考下面系列文章 PLC运动控制基础系列之梯形速度曲线_三菱运动控制模块梯形加减速-CSDN博客文章浏览阅读3.1k次,点赞3次,收藏7次。本文是关于PLC运动控制的基础教程,重点介绍了梯形速度曲线的概念、计算和应用。讨论了梯形加减速在启动和停…

指针的介绍3后

1.函数指针变量 1.1函数的地址 void test(int (*arr)[2]) {printf("zl_dfq\n"); } int main() {printf("%p\n", test);printf("%p\n", &test);return 0; } 由上面的程序运行可知&#xff1a; 函数名就是函数的地址 &函数名也可以拿到函…

春晚舞台上的人形机器人:科技与文化的奇妙融合

文章目录 人形机器人Unitree H1的“硬核”实力传统文化与现代科技的创新融合网友热议与文化共鸣未来展望&#xff1a;科技与文化的更多可能结语 2025 年央视春晚的舞台&#xff0c;无疑是全球华人目光聚焦的焦点。就在这个盛大的舞台上&#xff0c;一场名为《秧BOT》的创意融合…

连接 OpenAI 模型:基础操作

在这一部分中&#xff0c;我们将介绍如何连接 OpenAI 模型&#xff0c;设置 API 密钥&#xff0c;并使用 Spring AI 的 ChatClient 与 OpenAI 模型进行简单的对话。Spring AI 为集成 OpenAI 模型提供了方便的工具&#xff0c;使得开发者能够更轻松地与 GPT 系列模型进行交互。 …

CMake常用命令指南(CMakeList.txt)

CMakeList从入门到精通的文章有很多不再赘述&#xff08; 此处附带一篇优秀的博文链接&#xff1a;一个简单例子&#xff0c;完全入门CMake语法与CMakeList编写 &#xff09;。 本文主要列举 CMake 中常用命令的详细说明、优缺点分析以及推荐做法&#xff0c;以更好地理解和灵…

zsh安装插件

0 zsh不仅在外观上比较美观&#xff0c;而且其具有强大的插件&#xff0c;如果不使用那就亏大了。 官方插件库 https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins 官方插件库并不一定有所有的插件&#xff0c;比如zsh-autosuggestions插件就不再列表里&#xff0c;下面演示zs…

消息队列篇--通信协议篇--应用层协议和传输层协议理解

在网络通信中&#xff0c;传输层协议和应用层协议是OSI模型中的两个不同层次的协议&#xff0c;它们各自承担着不同的职责。 下文中&#xff0c;我们以TCP/UDP&#xff08;传输层协议&#xff09;和HTTP/SMTP&#xff08;应用层协议&#xff09;为例进行详细解释。 1、传输层协…

Linux - 进程间通信(2)

目录 2、进程池 1&#xff09;理解进程池 2&#xff09;进程池的实现 整体框架&#xff1a; a. 加载任务 b. 先描述&#xff0c;再组织 I. 先描述 II. 再组织 c. 创建信道和子进程 d. 通过channel控制子进程 e. 回收管道和子进程 问题1&#xff1a; 解答1&#xff…

安全漏洞扫描与修复系统的高质量技术详解

安全漏洞扫描与修复系统的高质量技术详解 在当今的数字化时代&#xff0c;网络安全已成为企业和个人不可忽视的重要议题。安全漏洞扫描与修复系统作为保障网络安全的关键环节&#xff0c;其重要性日益凸显。本文将深入探讨安全漏洞扫描与修复系统的原理、流程、工具选择以及实…

基于Django的豆瓣影视剧推荐系统的设计与实现

【Django】基于Django的豆瓣影视剧推荐系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用了Python作为后端开发语言&#xff0c;采用Django作为后端架构&#xff0c;结…

【Rust自学】15.7. 循环引用导致内存泄漏

说句题外话&#xff0c;这篇文章真心很难&#xff0c;有看不懂可以在评论区问&#xff0c;我会尽快作答的。 喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω…

Blazor-Blazor Web App项目结构

让我们还是从创建项目开始&#xff0c;来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式&#xff0c;有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…

Bootstrap 简介

Bootstrap 简介 Bootstrap 是一个流行的前端框架,它可以帮助开发者快速构建响应式、移动优先的网站和应用程序。自 2011 年发布以来,Bootstrap 已经成为全球范围内最受欢迎的前端开发工具之一。本文将详细介绍 Bootstrap 的概念、特点、安装和使用方法。 Bootstrap 概念 B…

登录授权流程

发起一个网络请求需要&#xff1a;1.请求地址 2.请求方式 3.请求参数 在检查中找到request method&#xff0c;在postman中设置同样的请求方式将登录的url接口复制到postman中&#xff08;json类型数据&#xff09;在payload中选择view parsed&#xff0c;将其填入Body-raw中 …