混乱的置换 解题报告

news/2025/10/16 12:51:14/文章来源:https://www.cnblogs.com/xiaozi-qwq/p/19145341

简要题意

给定一个长度为 \(n\) 的序列 \(a\),值域为 \([0,m]\)。将该序列循环右移 \(1\) 位,并记录下当前序列,重复该过程 \(n\) 次。将得到的序列按字典序升序排序,构成一个 \(n \times n\) 的矩阵,给出该矩阵的最后一列,询问矩阵的第一行。

数据范围:\(n \le 10^3,m \le 9\)

分析

循环位移有很多有意思的性质。

我们首先可以知道该矩阵的第一列,就是最后一列排序升序的结果。

那么我们观察到:将某一行循环右移后得到的序列,一定在矩阵里。这不废话

那么我们再观察:如果将所有以 \(x\) 结尾的行都循环右移一位,那么得到的行就是矩阵中所有以 \(x\) 开头的行。这不还是废话

那么我们再观察:这些序列在操作前后的相对顺序没有改变。为什么?

证明:我们假设对于两个以 \(x\) 结尾的序列 \(T_1,T_2\)\(T_1\) 排在 \(T_2\) 前),有 \(T_1=t_1+x,T_2=t_2+x\)。因为 \(T_1 < T_2\)(字典序比较,下同),那么有 \(T_1<T_2 \rightarrow t_1+x < t_2+x \rightarrow t_1<t_2\)。那么有 \(x+t_1<x+t_2\),也就是 \(T_1'<T_2'\)。Q.E.D.

那么依据这个结论,我们可以找到每一个序列右移后得到的序列,那么按这个顺序遍历,输出每一个序列的第一个元素即可。

代码

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define Inf (1ll<<60)
#define For(i,s,t) for(int i=s;i<=t;++i)
#define Down(i,s,t) for(int i=s;i>=t;--i)
#define ls (i<<1)
#define rs (i<<1|1)
#define bmod(x) ((x)>=p?(x)-p:(x))
#define lowbit(x) ((x)&(-(x)))
#define End {printf("NO\n");exit(0);}
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
inline void ckmx(int &x,int y){x=(x>y)?x:y;}
inline void ckmn(int &x,int y){x=(x<y)?x:y;}
inline void ckmx(ll &x,ll y){x=(x>y)?x:y;}
inline void ckmn(ll &x,ll y){x=(x<y)?x:y;}
inline int min(int x,int y){return x<y?x:y;}
inline int max(int x,int y){return x>y?x:y;}
inline ll min(ll x,ll y){return x<y?x:y;}
inline ll max(ll x,ll y){return x>y?x:y;}
char buf[1<<20],*p1,*p2;
#define gc() (p1 == p2 ? (p2 = buf + fread(p1 = buf, 1, 1 << 20, stdin), p1 == p2 ? EOF : *p1++) : *p1++)
#define read() ({\int x = 0, f = 1;\char c = gc();\while(c < '0' || c > '9') f = (c == '-') ? -1 : 1, c = gc();\while(c >= '0' && c <= '9') x = x * 10 + (c & 15), c = gc();\f * x;\
})
void write(int x){if(x>=10) write(x/10);putchar(x%10+'0');
}
const int N=10100,M=20;
int n,m,t[M],a[N],cnt,st[N];
void findst(){For(i,0,m) ct[i]=t[i];int ind=0;For(i,1,n){while(!ct[ind]) ++ind;st[i]=ind;--ct[ind];}
}
vector<int> nod[M];
int cur[M],to[N];
int main()
{
#if !ONLINE_JUDGEfreopen("permutation.in","r",stdin);freopen("permutation.out","w",stdout);
#endif n=read(),m=read();int mn=m;For(i,1,n) a[i]=read(),++t[a[i]],ckmn(mn,a[i]);findst();For(i,1,n) nod[st[i]].push_back(i);For(i,1,n){to[nod[a[i]][cur[a[i]]]]=i;++cur[a[i]];}int nw=1;For(i,1,n){printf("%d ",st[nw]);nw=to[nw];}return 0;
}

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

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

相关文章

我42岁才顿悟:穷人的富养是带娃到处旅游,富人的富养是教会这一项本事

"15岁儿子连护照都没有的商业巨擘告诉我:真正的富养不是环游世界,而是培养深度钻研能力。当我炫耀带女儿去过20国时,他一句话戳破了百万教育投资的泡沫——旅行是最简单的富养方式,本质上是偷懒。"引言站…

2025年10月环保板材品牌推荐:榜单聚焦西南龙头杰家

在选择环保板材品牌时,关键在于找到最适合自身实际需求的解决方案。中国林产工业协会《2024中国人造板产业报告》显示,2023年全国规模型饰面人造板产量4.1亿平方米,其中ENF级环保板材占比首次突破28%,终端用户满意…

Dash to Dock

https://extensions.gnome.org/extension/307/dash-to-dock/

2025 年碳纤维布厂家 TOP 企业品牌推荐排行榜,碳纤维布 / 建筑碳纤维布 / 加固碳纤维布 / 300 克碳纤维布 / 碳纤维加固布公司推荐!

在当前建筑加固行业快速发展的背景下,碳纤维布作为关键加固材料,其市场需求持续攀升,但行业也面临着诸多亟待解决的问题。一方面,市场上碳纤维布产品质量参差不齐,部分厂家为降低成本,生产的产品在抗拉强度、耐老…

fastjson转换json时,碰到的那些首字母大小写转换的坑

fastjson转换json时,碰到的那些首字母大小写转换的坑转自:java - fastjson转换json时,碰到的那些首字母大小写转换的坑! - agamem - SegmentFault 思否在api的处理过程里面,bean转换成json时,我们总是希望字段名…

2025年10月龙骨机厂家最新推荐榜,轻钢,装配式建筑,高速,全自动,吊顶,隔墙,高精度,快装式,方通龙骨龙骨机推荐这十家公司!

在当前建筑与机械制造行业快速发展的背景下,龙骨机作为冷弯机械领域的重要设备,其质量、性能与服务直接影响着下游企业的生产效率与工程质量。然而,市场上龙骨机制造商数量众多,产品质量参差不齐,技术水平差异明显…

命令行AI编程工具Jules Tools发布解析

某中心实验室推出Jules Tools命令行工具,让开发者能在终端直接使用AI编程助手。该工具基于Gemini模型,可自动修复代码错误、编写测试用例,支持异步编程操作,显著提升开发效率。通过npm即可安装使用。命令行AI编程工…

2025年东莞脱模剂混合机厂家最新权威推荐榜:专业设备与高效服务深度解析,优质供应商联系方式全收录

2025年东莞脱模剂混合机厂家最新权威推荐榜:专业设备与高效服务深度解析在制造业快速发展的今天,脱模剂混合机作为生产过程中不可或缺的关键设备,其性能优劣直接影响产品质量和生产效率。随着工业4.0时代的到来,脱…

10 封装和继承的概念

10 封装和继承的概念面向对象2 封装和继承的概念 封装 程序设计的追求:高内聚、低耦合 ​ 即内部数据操作细节自己完成,不允许外部干涉。 ​ 仅暴露少量的方法供外部使用。 属性私有,get、setprivate :私有 无法直…

2025年破胶机厂家TOP企业品牌推荐排行榜,610,710,810,大型,自动型,低温环保,节能省电,自动打块,轮胎破胶机公司推荐

在废旧橡胶回收再利用行业蓬勃发展的当下,破胶机作为关键设备,其性能与质量直接影响着生产效率和产品品质。然而,当前市场上破胶机制造商数量众多,产品质量参差不齐,技术水平也存在较大差异。部分厂家生产的设备存…

OceanBase素材字典和性能视图

OceanBase素材字典和性能视图pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

2025年10月品牌设计公司推荐排行榜,聚焦企业综合实力与核心竞争力

在当前商业竞争日益激烈的市场环境下,品牌设计已成为企业塑造独特形象、提升市场竞争力的关键环节。然而,品牌设计行业却面临着诸多亟待解决的问题。一方面,部分品牌设计机构缺乏专业的战略思维,仅将设计停留在表面…

2025年3C铝型材厂家行业标杆:船舶铝材/电力铝材/3C铝材廊坊国美铝业,21项专利加持,全品类适配获五星推荐

随着新能源汽车、绿色建筑等产业加速升级,铝型材作为轻量化核心材料,市场需求在 2025 年持续攀升。但行业扩张也带来品质参差问题,企业选购时常面临耐腐蚀性难验证、场景适配错配、环保合规不达标等困扰。为帮助企业…

实用指南:pink老师html5+css3day01

实用指南:pink老师html5+css3day012025-10-16 12:26 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

2025年工业机器人厂家最新权威推荐榜:专业集成与智能应用解决方案深度解析

2025年工业机器人厂家最新权威推荐榜:专业集成与智能应用解决方案深度解析随着工业4.0时代的深入发展,工业机器人已成为制造业转型升级的核心驱动力。根据国际机器人联合会最新数据,全球工业机器人安装量预计在2025…

what is 8.3 file-naming convention?

The term “8.3 filenames” refers to the legacy file-naming convention used by MS-DOS and early versions of Windows (as well as FAT file systems) in which file names were limited to:8 characters for th…

2025智慧水务平台

随着国家“十四五”智慧水利规划落地,这场以数字孪生和AI决策为核心的水务革命,正悄然重构城市命脉。一、核心架构:1+2+3+N+X的“智慧水脑” 1. 底层逻辑:全域感知神经网 物联网+5G:百万级传感器实时采集水质、流…

what is .NFO?

FROM CHATGPT, OF COURSE.An .NFO file (short for info file) is a plain text file traditionally used to provide information, metadata, and notes about a particular release, most notably in software, ware…

机惨

rt: 有时候开开玩笑可以,你太过分就有点烦人了 你机惨我我其实不很气,我知道你只是想找点乐子(给别人看看你推) 哦那你就往我桌面上粘300多张?删都删不干净,那不纯有病吗?(惨完我你还笑得挺开心的) 最后没办法…

auipc指令在NEMU中的执行过程 - Zeeh

auipc指令在NEMU中的执行过程假设指令集为RV64I内存地址开始于0x8000 0000使用如下的代码: static const uint32_t img [] = {0x00000297, // auipc t0,00x00028823, // sb zero,16(t0)0x0102c503, // lbu a0,16(…