P9120 [春季测试 2023] 密码锁

Portal.

对于每一个拨圈,分别考虑它对答案的影响。但注意到当前拨圈的最优转动方案会对之后的拨圈转动方案产生影响,即有后效性。

后效性的产生可以通过随机化改变考虑的顺序解决。

代码实现的一点细节:先考虑出每个圈的最优转动方案,更新在此方案下的当前局面每一行的最大值、最小值。把 n n n 个拨圈全部统计完之后更新当前考虑顺序下的答案。

注意到 random_shuffleshuffle 更好地快速逼近答案。

#include <bits/stdc++.h>
using namespace std;const int maxn=5e4+5;
int a[maxn][5],mx[5],mi[5],T,k;void solve()
{int n;cin>>n;for(int j=1;j<=k;j++) for(int i=1;i<=n;i++) cin>>a[i][j];int tt=300,ans=0x3f3f3f;while(tt--){// mt19937 rd(time(0));// shuffle(a+1,a+n+1,rd);random_shuffle(a+1,a+n+1);memset(mx,-0x3f3f3f,sizeof mx),memset(mi,0x3f3f3f,sizeof mi);for(int i=1;i<=n;i++){int minstp=0,minv=0x3f3f3f;for(int stp=0;stp<k;stp++){int vv=0;for(int j=1;j<=k;j++){int pos=(j+stp-1)%k+1;vv=max(vv,max(mx[j],a[i][pos])-min(mi[j],a[i][pos]));}if(vv<minv) minstp=stp,minv=vv;}for(int j=1;j<=k;j++) {int nowpos=(j+minstp-1)%k+1;mx[j]=max(mx[j],a[i][nowpos]),mi[j]=min(mi[j],a[i][nowpos]);}if(minv>=ans) break;//到当前局面松散度已经超过原答案// cout<<minstp<<' '<<minv<<endl;}int tmp=0;for(int i=1;i<=k;i++) tmp=max(tmp,mx[i]-mi[i]);ans=min(tmp,ans);}cout<<ans<<'\n';
}int main()
{cin>>T>>k;while(T--) solve();return 0;
}

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

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

相关文章

定时关机软件哪个好?定时关机软件大盘点

在生活和工作中&#xff0c;我们可以使用定时关机软件来定时关闭电脑&#xff0c;以实现对电脑的控制。那么&#xff0c;定时关机软件哪个好呢&#xff1f;下面我们就来了解一下。 定时关机软件的作用 定时关机软件可以帮助用户在预设的时间自动关闭电脑。这对于那些需要在特…

网站被攻击怎么办?

网站被大流量攻击会造成服务器资源耗尽&#xff0c;一直到宕机崩溃&#xff0c;网站无法访问甚至被机房停用&#xff0c;时间长就导致网站排名下降&#xff0c;所以必需及时处理。下面跟大家分享服务器被大流量攻击怎么办&#xff1f;服务器攻击防护如何做&#xff1f; 一、服…

docker 容器优雅关闭 —— 筑梦之路

什么是优雅关闭&#xff1f; 优雅关闭&#xff1a; 在关闭前&#xff0c;执行正常的关闭过程&#xff0c;释放连接和资源&#xff0c;如我们操作系统执行shutdown 目前业务系统组件众多&#xff0c;互相之间调用关系也比较复杂&#xff0c;一个组件的下线、关闭会涉及到多个组件…

centos7安装 ActiveMq Artemis,安装服务开机自启动

ActiveMQ Artemis 2.31.2 有java11环境 [rootlocalhost ~]# java -version openjdk version "11.0.20" 2023-07-18 LTS OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.208-LTS) OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1.el7_9) …

HTML5学习系列之响应式图像

HTML5学习系列之响应式图像 前言响应式图像响应视图大小响应屏幕方向响应像素密度响应图像格式自适应像素比自适应视图宽 总结 前言 学习记录 响应式图像 响应视图大小 容器 srcset&#xff1a;图片地址&#xff0c;必需有。media&#xff1a;设置媒体查询。sizes&#xff…

【Vue渲染】 条件渲染 | v-if | v-show | 列表渲染 | v-for

目录 前言 v-if和v-show的区别和联系 v-show和v-if如何选择 条件渲染|v-if|v-show v-if v-if v-else v-if v-else-if v-else template v-show 列表渲染|v-for v-for 前言 本文介绍Vue渲染&#xff0c;包含条件渲染v-if和v-show的区别和联系以及列表渲染v-for v-if和…

AtCoder ABC156

C - Rally 从0到100模拟一遍位置最小的点 最小值实际上可以计算导数&#xff0c;将复杂度降为 O ( 1 ) O(1) O(1) D - Bouquet 组合数 2 n − 1 − C ( n , a ) − C ( n , b ) 2^{n}-1-C(n,a)-C(n,b) 2n−1−C(n,a)−C(n,b) 由于a.b都不大&#xff0c;因此可以做。注意用递推…

Android Studio 写一个Java调用c++ 的demo

前提条件&#xff1a; 本地已经配置好了ndk环境,如果没有配置好&#xff0c;建议参考macos 配置ndk环境-CSDN博客 这篇链接。 新建一个Empty Project 比如我这里的Project的名字是HelloJNI&#xff0c;包名是com.example.hellojni 然后在src目录下&#xff0c;右键选择Add C …

Tensorflow2.0:CNN、ResNet实现MNIST分类识别

以下仅是个人的学习笔记 &#xff0c;内容可能是错误 CNN&#xff1a; import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers# 导入数据 (x_train, y_train), (x_test, y_test) keras.datasets.mnist.load_data()# 数据预处理 x_tra…

Flink之OperatorState

在Flink中状态主要分为三种: Operator State(算子状态)Keyed State(键控状态)Broadcast State(广播状态) 这里简单介绍一下Operator State的使用,说到使用State就必然要使用到Flink的容错机制也就是Checkpoint.具体内容见代码注解 数据源 这里选用Socket作为Source输入,便于…

JVM虚拟机:通过日志学习PS+PO垃圾回收器

我们刚才设置参数的时候看到了-XXPrintGCDetails表示输出详细的GC处理日志&#xff0c;那么我们如何理解这个日志呢&#xff1f;日志是有规则的&#xff0c;我们需要按照这个规则来理解日志中的内容&#xff0c;它有两个格式&#xff0c;一个格式是GC的格式&#xff08;新生代&…

二叉树题目:二叉树的最近公共祖先

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树的最近公共祖先 出处&#xff1a;236. 二叉树的最近公共祖先 难度 5 级 题目描述 要求 给定一个二叉树&…

Redis 的集群模式实现高可用

来源&#xff1a;Redis高可用&#xff1a;武林秘籍存在集群里&#xff0c;那稳了~ (qq.com) 1. 引言 前面我们已经聊过 Redis 的主从同步&#xff08;复制&#xff09;和哨兵机制&#xff0c;这期我们来聊 Redis 的集群模式。 但是在超大规模的互联网应用中&#xff0c;业务规…

2023年Java核心技术大会(Core Java Week 2023)-核心PPT资料下载

一、峰会简介 人工智能在22年、23年的再次爆发让Python成为编程语言里最大的赢家&#xff1b;云原生的持续普及令Go、Rust等新生的语言有了进一步叫板传统技术体系的资本与底气。我们必须承认在近几年里&#xff0c;Java阵营的确受到了前所未有的挑战&#xff0c;出现了更多更…

机器视觉系统选型-定光照强度

同一个外形结构的光源&#xff0c;光照强度受如下影响&#xff1a; 单颗灯珠的亮度灯珠排列的数量和密度漫射板/防护板的材质&#xff08;透明、半透明、全漫射&#xff09; 在合理范围内提升光照强度&#xff0c;可降低对相机曝光时长的要求 外形结构尺寸相同的两款光源&am…

Mac电脑VSCode配置PHP开发环境

1.安装 PHP 首先&#xff0c;打开终端&#xff0c;安装 Homebrew&#xff0c;输入如下命令&#xff1a; $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安装了 Homebrew 之后&#xff0c;你可以使用下面的…

C++学习 --pair

目录 1&#xff0c; 什么是pair 2&#xff0c; 创建pair 2-1&#xff0c; 标准数据类型 2-2&#xff0c; 自定义数据类型 3&#xff0c; 查询元素 3-1&#xff0c; 标准数据类型 3-2&#xff0c; 自定义数据类型 1&#xff0c; 什么是pair 数据以键值对形式存放的容器&…

基于C++实现循环赛日程表(分治算法)

一、问题描叙 设有n2^k个运动员&#xff0c;要进行网球循环赛。现在要设计一个满足以下要求的比赛日程表 每个选手必须与其他n-1个选手各赛一场每个选手一天只能赛一次循环赛一共进行n-1天 二、问题分析 按此要求可将比赛日程表设计成n行n-1列的表&#xff0c;在表中第 i 行…

【微客云】外卖霸王餐-城市分站加盟-区域代理-服务商模式

主要功能介绍 程序主要功能&#xff1a; 1.自动定位用户展示活动 2.两个活动推广展示位 3.外卖CPS接入&#xff0c;或者更多CPS接入自己操作 4.报名支付报名费&#xff08;自定义报名费价格&#xff09;&#xff0c;取消订单30分钟内自动退款&#xff08;时间可调&#xff09; …

uniapp中使用render.js进行openers、arcgis等地图操作

uniapp中使用render.js进行openers、arcgis等地图操作 一、为啥需要render.js render.js主要作用于APP上&#xff0c;因为Uniapp本质为vuejshtml进行开发&#xff0c;整个技术栈还是H5&#xff0c;对DOM元素进行操作。而APP中没用Dom元素这个概念。因此利用render.js这个视图层…