1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

思路

  • 关键等价:若在某次操作中选择的位置的值分别为 vvv 与 v+1v+1v+1,则操作后它们交换位置;否则不可能保持为排列。 证明要点:多重集计数平衡要求对 a→a+1a\to a+1a→a+1 与 b→b−1b\to b-1b→b−1 的四个计数改变量相互抵消,只有当 b=a+1b=a+1b=a+1 时成立。

  • 因而,允许的操作等价于“交换值为相邻数对 (v,v+1)(v, v+1)(v,v+1) 的两个位置”,这就是在“值空间”的相邻换位。

  • 设 pos[v]\text{pos}[v]pos[v] 为值 vvv 的当前位置,则当且仅当 pos[v]>pos[v+1]\text{pos}[v] > \text{pos}[v+1]pos[v]>pos[v+1] 时,(v,v+1)(v, v+1)(v,v+1) 构成一对“逆序”。每次交换 (v,v+1)(v, v+1)(v,v+1) 会恰好使逆序数减少 111。

  • 令

    inv(p)\text{inv}(p)inv(p)=∣(i,j)∣1≤i<j≤n, pi>pj∣\left|{(i,j)\mid 1\le i<j\le n,\ p_i>p_j}\right|∣(i,j)∣1≤i<j≤n, pi​>pj​∣

P3500.第1题-小红的排列

    1000ms Tried: 65 Accepted: 22 Difficulty: 5 所属公司 : 阿里
    算法与标签>排序算法

题目内容

给定长度为 nnn 的排列 {p1,p2,…,pnp_1,p_2,…,p_np1​,p2​,…,pn​},定义一次操作为:

选择两个不同的位置 i,ji,ji,j ,将 pip_ipi​ 增加 111 ,同时将 PjP_jPj​ 减少 111 ;同时需要保证每次操作后,数组仍是 111 到 nnn 的一个排列。

问将数组变为严格递增排列 {1,2,…,n1,2,…,n1,2,…,n} 需要的最少操作次数。

长度为 nnn 的排列是由 1,2,...,n1,2,...,n1,2,...,n 这 nnn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,{2,3,1,5,42,3,1,5,42,3,1,5,4} 是一个长度为 555 的排列,而 {1,2,21,2,21,2,2} 和 {1,3,41,3,41,3,4} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述

第一行输入整数 n(1≤n≤103)n(1≤n≤10^3)n(1≤n≤103) 表示排列长度;

第二行输入 nnn 个整数 p1,p2,...,pn(1≦pi≦n)p_1,p_2,...,p_n(1≦p_i≦n)p1​,p2​,...,pn​(1≦pi​≦n) ,它们构成 111 到 nnn 的个排列。

输出描述

第一行输出一个整数 kkk ,表示需要的最少操作次数。

此后 kkk 行,第 iii 行输出两个整数 xi,yi(1≦xi,yi≦n;xi≠yi)x_i,y_i(1≦x_i,y_i≦n;x_i≠y_i)xi​,yi​(1≦xi​,yi​≦n;xi​=yi​) ,表示第 iii 次操作将 PxiP_{x_i}Pxi​​ 増加 111 ,PyiP_{y_i}Pyi​​ ; 减少 111 .

如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。

样例1

输入

3
3 2 1

输出

3
3 2
3 1
2 1

说明

在这个样例中,初始排列为 {3,2,13,2,13,2,1}:

第一次操作 (x1=3,y1=2)(x_1= 3,y_1= 2)(x1​=3,y1​=2) 后排列变为 {3,1,23,1,23,1,2} ;

第二次操作 (x2=3,y2=1)(x_2= 3,y_2 = 1)(x2​=3,y2​=1) 后排列变为 {2,1,32,1,32,1,3} ;

第三次操作 (x3=2,y3=1)(x_3= 2,y_3 = 1)(x3​=2,y3​=1) 后排列变为 {1,2,31,2,31,2,3} ;

综上,通过 333 次操作将排列变为严格递增排列 1,2,3{1,2,3}1,2,3 。我们可以证明,这是最少需要的操作次数。

样例2

输入

1
1

输出

0

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 1, 973ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?