当前位置: 首页 > article >正文

洛谷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;
}

相关文章:

洛谷P11464 支配剧场

支配剧场 题目背景 May all the beauty be blessed. 题目描述 布洛妮娅和符华在寻找琪亚娜的途中&#xff0c;被支配之律者困在了支配剧场的高塔回廊之中。布洛妮娅敏锐地发现&#xff0c;虚无回廊是由一些支配之律者生成的积木构成的&#xff0c;只要击碎其中一些积木&#…...

自动化数据备份与恢复:让数据安全无忧

友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...

如何用matlab画一条蛇

文章目录 源代码运行结果代码说明结果 源代码 % 画蛇的代码 % 2025-01-28/Ver1 % 清空环境 clc; clear; close all;% 定义蛇的身体坐标 t linspace(0, 4*pi, 100); % 参数化变量 x t; % x坐标 y sin(t) 0.5 * sin(3*t); % y坐标&#xff0c;形成更复…...

DVC - 数据版本和机器学习实验的命令行工具和 VS Code 扩展

文章目录 一、关于 DVC二、快速启动三、DVC的工作原理四、VS代码扩展五、安装Snapcraft&#xff08;Linux&#xff09;Chocolatey (Windows)Brew (mac OS)Anaconda (Any platform)PyPI&#xff08;Python&#xff09;Package (Platform-specific)Ubuntu / Debian (deb)Fedora /…...

理解神经网络:Brain.js 背后的核心思想

温馨提示 这篇文章篇幅较长,主要是为后续内容做铺垫和说明。如果你觉得文字太多,可以: 先收藏,等后面文章遇到不懂的地方再回来查阅。直接跳读,重点关注加粗或高亮的部分。放心,这种“文字轰炸”不会常有的,哈哈~ 感谢你的耐心阅读!😊 欢迎来到 brain.js 的学习之旅!…...

Maui学习笔记- SQLite简单使用案例02添加详情页

我们继续上一个案例&#xff0c;实现一个可以修改当前用户信息功能。 当用户点击某个信息时&#xff0c;跳转到信息详情页&#xff0c;然后可以点击编辑按钮导航到编辑页面。 创建项目 我们首先在ViewModels目录下创建UserDetailViewModel。 实现从详情信息页面导航到编辑页面…...

typescript 简介

可选链操作符 可选链操作符( ?. ) 允许读取位于连接对象链深处的属性的值&#xff0c;而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符&#xff0c;不同之处在于&#xff0c;在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误&a…...

selenium定位网页元素

1、概述 在使用 Selenium 进行自动化测试时&#xff0c;定位网页元素是核心功能之一。Selenium 提供了多种定位方法&#xff0c;每种方法都有其适用场景和特点。以下是通过 id、linkText、partialLinkText、name、tagName、xpath、className 和 cssSelector 定位元素的…...

Autogen_core 测试代码:test_cache_store.py

目录 原始代码测试代码代码中用到的typing注解 原始代码 from typing import Dict, Generic, Optional, Protocol, TypeVarT TypeVar("T")class CacheStore(Protocol, Generic[T]):"""This protocol defines the basic interface for store/cache o…...

变压器的漏感

测量变压器漏感的时候需要将次级绕组短路&#xff1a; 测量变压器初级线圈的电感方法很简单&#xff0c;直接用LCR测量就可&#xff0c;无需像测量漏感那样将次级绕组短接&#xff1a;...

【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测

&#x1f525;【新春特辑】2025年春节技术展望&#xff1a;蛇年里的科技创新与趋势预测 &#x1f4c5; 发布日期&#xff1a;2025年01月29日&#xff08;大年初一&#xff09; 在这个辞旧迎新的美好时刻&#xff0c;我们迎来了充满希望的2025年&#xff0c;也是十二生肖中的蛇…...

cursor软件的chat和composer分别是什么

Cursor 是一款基于人工智能的代码编辑器&#xff0c;集成了类似 ChatGPT 的功能&#xff0c;旨在帮助开发者更高效地编写代码。以下是 Cursor 中 Chat 和 Composer 的具体功能&#xff1a; 1. Chat Cursor 中的 Chat 是一个基于 AI 的聊天功能&#xff0c;类似于 ChatGPT&…...

从ChatGPT热潮看智算崛起

2025年1月7日&#xff0c;科智咨询发布《2025年IDC产业七大发展趋势》&#xff0c;其中提到“ChatGPT开启生成式AI热潮&#xff0c;智能算力需求暴涨&#xff0c;算力供给结构发生转变”。 【图片来源于网络&#xff0c;侵删】 为何会以ChatGPT发布为节点呢&#xff1f;咱们一起…...

攻克 AI 幻觉难题

当下&#xff0c;AI 已经成为我们生活中不可或缺的一部分。无论是智能语音助手&#xff0c;还是对话式的AI模型&#xff0c;它们凭借强大的算法和海量的数据&#xff0c;为我们答疑解惑、出谋划策。 然而&#xff0c;小编今天向AI提问&#xff1a;上山打老虎。他却回答&#x…...

格式化时间的插件

1.安装dayjs包 npm i dayjs 2.组件中的应用...

自创《艺术人生》浅析

艺术是生活的馈赠&#xff0c;艺术是苦痛的呻吟。 笔记模板由python脚本于2025-01-29 00:01:11创建&#xff0c;本篇笔记适合喜欢写诗读诗诵诗的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 …...

【Python-办公自动化】实现自动化输出json数据类型的分析报告和正逆转换

分析报告 import json from pprint import pprint, PrettyPrinterdef analyze_energy_data(file_path):"""能源数据分析与结构查看函数参数:file_path (str): JSON文件路径功能:1. 加载并解析JSON数据2. 显示数据结构概览3. 交互式结构探索"""…...

防御保护第一次实验:安全策略配置

一、实验拓扑 二、实验要求 三、需求分析 1.创建两个vlan 2.在ENSP中配置基于时间的ACL实现对于办公区PC访问OA Server的时间限制&#xff08;工作日早8到晚6&#xff09;。 3.通过配置基于MAC地址的ACL来实现对于生产区PC访问Web Server的限制&#xff08;除PC3外不能访问&am…...

【Pytest】生成html报告中,中文乱码问题解决方案

链接上一篇文章:https://blog.csdn.net/u013080870/article/details/145369926?spm1001.2014.3001.5502 中文乱码问题&#xff0c;python3&#xff0c;Python3.7后&#xff0c;还一个文件就是result.py 因为中文可以在内容中&#xff0c;也可能在文件名&#xff0c;类名&…...

【ollama通过命令行启动后如何在网页端查看运行】

ollama通过命令行启动后如何在网页端查看运行 http://localhost:11434/...

Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin

Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊&#xff08;毛玻璃&#xff09;对比&#xff0c;Kotlin import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.RectF …...

Jetpack Compose 和 Compose Multiplatform 还有 KMP 的关系

今天刚好看到官方发布了一篇文章&#xff0c;用于讨论 Compose Multiplatform 和 Jetpack Compose 之间的区别&#xff0c;突然想起之前评论区经常看到说 “Flutter 和 CMP 对于 Google 来说项目重叠的问题”&#xff0c;刚好可以放一起聊一聊。 最近写的几篇内容写的太干&…...

基于STM32的智能宠物喂食器设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 定时喂食模块远程控制与视频监控模块食物存量检测与报警模块语音互动与用户交互模块数据记录与智能分析模块 控制算法 定时与手动投喂算法食物存量检测与低存量提醒算法数据记录与远程反馈算法 代码实现 喂食控制代码存量检测…...

python生成图片和pdf,快速

1、下载安装 pip install imgkit pip install pdfkit2、wkhtmltopdf工具包&#xff0c;下载安装 下载地址&#xff1a;https://wkhtmltopdf.org/downloads.html 3、生成图片 import imgkit path_wkimg rD:\app\wkhtmltopdf\bin\wkhtmltoimage.exe # 工具路径&#xff0c;安…...

解锁FPGA的故障免疫密码

我们身处“碳基智能”大步迈向“硅基智能”序曲中,前者更像是后者的引导程序,AI平民化时代,万物皆摩尔定律。 越快越好,几乎适用绝大多数场景。 在通往人工智能的征程中,算力无处不在,芯片作用无可替代。 十六年前,就已宣称自己是一家软件公司的英伟达,现已登顶全球…...

【数据结构】初识链表

顺序表的优缺点 缺点&#xff1a; 中间/头部的插入删除&#xff0c;时间复杂度效率较低&#xff0c;为O(N) 空间不够的时候需要扩容。 如果是异地扩容&#xff0c;增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间&#xff0c;会有不小的消耗。 扩容可能会存在…...

【hot100】刷题记录(6)-轮转数组

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转…...

如何移植ftp服务器到arm板子?

很多厂家提供的sdk&#xff0c;一般都不自带ftp服务器功能&#xff0c; 需要要发人员自己移植ftp服务器程序。 本文手把手教大家如何移植ftp server到arm板子。 环境 sdk&#xff1a;复旦微 Buildroot 2018.02.31. 解压 $ mkdir ~/vsftpd $ cp vsftpd-3.0.2.tar.gz ~/vs…...

深度学习 Pytorch 神经网络的损失函数

本节开始将以分类神经网络为例&#xff0c;展示神经网络的学习和训练过程。在介绍PyTorch的基本工具AutoGrad库时&#xff0c;我们系统地介绍过数学中的优化问题和优化思想&#xff0c;我们介绍了最小二乘法以及梯度下降法这两个入门级优化算法的具体操作&#xff0c;并使用Aut…...

Node.js 的底层原理

Node.js 的底层原理 1. 事件驱动和非阻塞 I/O Node.js 基于 Chrome V8 引擎&#xff0c;使用 JavaScript 作为开发语言。它采用事件驱动和非阻塞 I/O 模型&#xff0c;使其轻量且高效。通过 libuv 库实现跨平台的异步 I/O&#xff0c;包括文件操作、网络请求等。 2. 单线程事…...