【题解】Luogu P2354 [NOI2014] 随机数生成器

news/2026/1/14 14:22:53/文章来源:https://www.cnblogs.com/Seqfrel/p/19343819

题意

题面花里胡哨。直接看到棋盘那一段,告诉我们 \(K=N\times M\),也就是按给定递推式算出前 \(N\times M\) 项,按规定交换 \(1\sim K\) 的递增序列,最后再按顺序填入 \(N \times M\) 的数表。在上面找排序后字典序最小的路径序列。

思路

前半部分直接模拟。

重点在于寻找最优路径。排序后字典序最小,意味着路径中每一个数都要尽可能小。考虑贪心,在整个数表中找还未选过且能构成路径的最小的数。能构成路径的数,即该数一定在所有已选数的左上或右下。易得同时满足条件的数一定不超过 \(N+M-1\) 个。因为起点在所有数的左上,终点在所有数的右下,在这条法则下,起终点一定能被选到。

预处理出每个数在数表中的位置,从小到大遍历。用 \(L\)\(R\) 数组记录每一行还能选的数的区间。如果该数在区间内,则直接输出,并更新每一行的区间。直到选择了 \(N-M+1\) 个数后退出。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=2.5e7+10;
long long a,b,c,d;
int n,m,q,tot;
int t[maxn],x[maxn];
int l[5010],r[5010];
int main(){scanf("%lld%lld%lld%lld%lld",&x[0],&a,&b,&c,&d);scanf("%d%d%d",&n,&m,&q);//模拟 for(int i=1;i<=n*m;i++){t[i]=i;x[i]=(a*x[i-1]*x[i-1]%d+b*x[i-1]%d+c)%d;}for(int i=1;i<=n*m;i++) swap(t[i],t[(x[i]%i)+1]);for(int i=1;i<=q;i++){int u,v;scanf("%d%d",&u,&v);swap(t[u],t[v]); }//预处理 for(int i=1;i<=n*m;i++) x[t[i]]=i;for(int i=1;i<=n;i++) l[i]=1,r[i]=m;//贪心 for(int i=1;i<=n*m;i++){int tx,ty;if(x[i]%m) tx=x[i]/m+1;//计算该数的行和列 else tx=x[i]/m;ty=x[i]%m;if(!ty) ty=m;if(ty>=l[tx]&&ty<=r[tx]){//如果在区间内 printf("%d ",i);if(++tot==n+m-1) return 0;//选择完成 for(int j=1;j<=n;j++){//更新区间 if(j<tx) r[j]=min(r[j],ty);//右上角不能选,但不能覆盖之前已剔除的区间 else if(j>tx) l[j]=max(l[j],ty);//左下角不能选,但不能覆盖之前已剔除的区间 }}}return 0;
} 

细节

空间限制仅 250MB,而 \(N\times M\) 高达 \(2.5\times 10^7\),一个 int 数组接近 100MB,最多开两个。而 \(x\) 数组计算完后不再使用,需再次利用,作为预处理位置的数组。

但计算递推式时仍需开 long long。

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

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

相关文章

基于Django的农场管理系统

&#x1f345; 作者主页&#xff1a;Selina .a &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…

rsync交叉编译步骤

1. 系统环境 1.1 目标系统环境 DISTRIB_ID=OpenWrt DISTRIB_RELEASE=21.02-SNAPSHOT DISTRIB_REVISION=unknown DISTRIB_TARGET=mediatek/mt7988 DISTRIB_ARCH=aarch64_cortex-a53 DISTRIB_DESCRIPTION=OpenWrt 21.02-…

【题解】P11453 [USACO24DEC] Deforestation S

题意 数轴上有 \(n\) 个整点,求最多删除多少个整点,使得 \(k\) 个条件依然满足。每个条件形如:在 \([l_i,r_i]\) 范围内至少存在 \(t_i\) 个整点。 思路 删点操作有悖于满足条件的逻辑,因此正难则反,考虑最少保留…

下载UCI数据集《Secondary Mushroom》

说明:查看代码 1. Title: Primary mushroom data2. Sources:(a) Mushroom species drawn from source book:Patrick Hardin.Mushrooms & Toadstools.Zondervan, 1999(b) Inspired by this mushroom data:Jeff Sch…

03 以上版本 Excel 文件解压替换图片

replace_images_zip_method.ps1 代码如下 param ([Parameter(Mandatory=$true)][string]$ExcelPath,[Parameter(Mandatory=$true)][string]$ImagesFolder,[Parameter(Mandatory=$false)][string]$OutputSuffix = "…

【dl】【WSL2】如何获得“Winux”?Windows 上的 Linux 子系统 —— 比虚拟机更好的选择

准备工作 第一步&#xff1a;确认CPU虚拟化 打开任务管理器——性能&#xff0c;在cpu一栏找“虚拟化”&#xff0c;确认其已开启。一般大部分cpu都是默认开启的。没开启的请自行前往bios修改。第二步&#xff1a;开启两个Windows功能 在任务栏搜索 Windows功能。开启“适用于L…

人机协同重构创作生态——生成式AI赋能内容产业的变革与思考

当内容生产遭遇“产能焦虑”与“创意枯竭”的双重困境&#xff0c;生成式AI正以不可逆转的态势重构行业规则。2025年一季度数据显示&#xff0c;国内72%的内容团队已将AI工具纳入核心工作流&#xff0c;电商文案、短视频脚本等场景的AI渗透率超85%。这场变革不仅是生产效率的提…

【题解】Luogu P13977 数列分块入门 2

思路 动态维护区间信息,考虑线段树。但每次查询的值不固定,如要使用线段树维护,则需针对每个查询的值单独建一棵树,时空复杂度均不可接受。因此考虑分块。 区间加问题类比线段树,只需为每个全包含于区间的块打上懒…

CSS3动画:2D/3D转换全解析

CSS3初体验transition过渡可以为一个元素在不同状态之间切换的时候定义不同的过渡效果。div {width: 200px;height: 200px;background-color: pink;/* div所有的样式发生修改的时候&#xff0c;都有1s的过渡效果 */transition: all 1s; } ​ div:hover {width: 300px; }2D转换t…

AI核心知识50——大语言模型之Scaling Laws(简洁且通俗易懂版)

Scaling Laws (缩放定律) 是目前 AI 领域的“摩尔定律”&#xff0c;也是 OpenAI 等巨头公司敢于投入几百亿美元去训练下一个模型的“信仰之源”。简单来说&#xff0c;它揭示了一个通过大量实验得出的数学规律&#xff1a;只要你按比例增加“模型参数量”、“训练数据量”和“…

MySQL 深分页查询优化实践与经验总结

在企业级项目中&#xff0c;深分页查询经常会成为性能瓶颈。本篇文章总结了我在实践中优化深分页 SQL 的经验&#xff0c;包括 执行计划分析、索引优化、游标分页改写 等内容。一、问题场景假设我们有一张订单表 orders&#xff0c;包含字段&#xff1a;id, user_id, status, t…

理性抉择方可行远——企业AI转型的路径选择与风险管控

数字化浪潮下&#xff0c;AI转型已成为企业提升核心竞争力的必答题。然而现实中&#xff0c;不少企业陷入“转型即烧钱”“技术即万能”的误区&#xff1a;传统制造企业盲目自研大模型&#xff0c;耗费数百万后无功而返&#xff1b;互联网公司一味追求API集成便捷性&#xff0c…

P2014 [CTSC1997] 选课

P2014 [CTSC1997] 选课 大意 有些学科 \(i\) 有先修课 \(fa\) 这些课程形成了一个树形结构,问选 \(m\) 门课所能达到的最大的学分。 思路 考虑树上背包。 我们定义 \(f_{u,j}\) 表示在 \(u\) 子树内选 \(j\) 门课的最…

彻底讲清 MySQL InnoDB 锁机制:从 Record 到 Next-Key 的全景理解

在真实业务中&#xff0c;你遇到的大多数 MySQL 性能问题、死锁问题&#xff0c;几乎都与“锁”有关。但很多工程师对锁的理解停留在碎片层面&#xff1a; 知道“行锁”“间隙锁”“next-key-lock”&#xff0c;但不知道 SQL 是如何触发这些锁的、锁到底锁在哪里、为什么会锁这…

超越宣传:基于数据与案例的软件人才外包服务商价值评估指南

随着企业技术架构复杂化与项目节奏敏捷化并行&#xff0c;组建高效、稳定的技术团队已成为核心挑战。软件人才外包公司作为企业获取弹性技术能力的关键渠道&#xff0c;其市场正伴随数字化转型浪潮快速演进。据工信部运行监测协调局发布的2025年数据显示&#xff0c;我国软件和…

MCU的启动流程你了解么?

MCU&#xff08;微控制器单元&#xff09;的上电过程是一个精心设计的序列&#xff0c;它确保芯片从完全断电状态可靠地进入正常工作状态。1. 上电复位&#xff08;Power-on Reset&#xff09;当给MCU上电时&#xff0c;电源电压从0V开始上升至额定工作电压&#xff08;如3.3V&…

电机多目标优化与灵敏度分析:探索电机性能提升之道

电机多目标优化&#xff0c;灵敏度分析。 图12为变量与优化目标的灵敏度&#xff0c;图13为变量之间的显著性分析。 该方法在电机顶刊IEE工业电子学报上发表。图引用&#xff1a;Liu F, Wang X, Xing Z, et al. Analysis and Research on No-Load Air Gap Magnetic Field and S…

I2C通信最全面的讲解:从协议到硬件设计

IIC&#xff08; Inter-Integrated Circuit&#xff0c;or I2C&#xff09;协议是由飞利浦半导体&#xff08;现在的恩智浦半导体&#xff09;开发&#xff0c;并于1982年发布的一种串行、半双工总线&#xff0c;主要用于近距离&#xff0c;低速的芯片之间的通信&#xff1b;I2…

毕业论文选题AI推荐:9大工具+热门方向合集

毕业论文选题AI推荐&#xff1a;9大工具热门方向合集 &#xfffd;&#xfffd; 核心AI工具对比速览 工具名称 核心功能 适用场景 生成速度 特色优势 aibiye 初稿生成/降重/格式优化 全学科通用 20-30分钟 支持理工科图表公式自动插入 aicheck 选题推荐/查重/AIGC检…

打造下一个爆款!专业短剧APP全栈开发解决方案,解锁万亿级市场红利

一、市场前景&#xff1a;千亿蓝海&#xff0c;正待掘金短剧行业正以惊人速度扩张&#xff1a;市场规模&#xff1a;2023年超500亿&#xff0c;预计2025年突破千亿用户规模&#xff1a;日活用户超1.2亿&#xff0c;付费转化率超20%投资回报&#xff1a;头部APP月流水可达数千万…