Codeforces Minimize Permutation Subarrays(构造)

news/2024/11/20 1:23:26/

You are given a permutation p of size n. You want to minimize the number of subarrays of p�hat are permutations. In order to do so, you must perform the following operation exactly once:

  • Select integers i, j, where 1≤i,j≤n, then
  • Swap pi and pj.

For example, if p=[5,1,4,2,3] and we choose i=2, j=3, the resulting array will be [5,4,1,2,3][5,4,1,2,3]. If instead we choose i=j=5, the resulting array will be [5,1,4,2,3][5,1,4,2,3].

Which choice of i and j will minimize the number of subarrays that are permutations?

A permutation of length n is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4]is a permutation, but [1,2,2] is not a permutation (22 appears twice in the array), and [1,3,4] is also not a permutation (n=3 but there is 44 in the array).

An array a is a subarray of an array b if a can be obtained from b by the deletion of several (possibly, zero or all) elements from the beginning and several (possibly, zero or all) elements from the end.

Input

The first line of the input contains a single integer t (1≤t≤104) — the number of test cases. The description of the test cases follows.

The first line of each test case contains a single integer n (3≤n≤2⋅105) — the size of the permutation.

The next line of each test case contains n integers p1,p2,…pn (1≤pi≤n, all pi are distinct) — the elements of the permutation p.

It is guaranteed that the sum of n over all test cases does not exceed 2⋅1052⋅105.

Output

For each test case, output two integers i and j (1≤i,j≤n)  — the indices to swap in p.

If there are multiple solutions, print any of them.

Example

input

8

3

1 2 3

3

1 3 2

5

1 3 2 5 4

6

4 5 6 1 2 3

9

8 7 6 3 2 1 4 5 9

10

7 10 5 1 9 8 3 2 6 4

10

8 5 10 9 2 1 3 4 6 7

10

2 3 5 7 10 1 8 6 4 9

output

2 3
1 1
5 2
1 4
9 5
8 8
6 10
5 4

Note

For the first test case, there are four possible arrays after the swap:

  • If we swap p1 and p2, we get the array [2,1,3][2,1,3], which has 3 subarrays that are permutations ([1][1], [2,1][2,1], [2,1,3][2,1,3]).
  • If we swap p1 and p3, we get the array [3,2,1][3,2,1], which has 3 subarrays that are permutations ([1][1], [2,1][2,1], [3,2,1][3,2,1]).
  • If we swap p2 and p3, we get the array [1,3,2][1,3,2], which has 2 subarrays that are permutations ([1][1], [1,3,2][1,3,2]).
  • If we swap any element with itself, we get the array [1,2,3][1,2,3], which has 3 subarrays that are permutations ([1][1], [1,2][1,2], [1,2,3][1,2,3]).

So the best swap to make is positions 22 and 33.

For the third sample case, after we swap elements at positions 22 and 55, the resulting array is [1,4,2,5,3][1,4,2,5,3]. The only subarrays that are permutations are [1][1] and [1,4,2,5,3][1,4,2,5,3]. We can show that this is minimal.

题意:

给出一个长度为n的排列a,下标为1~n,现在你可以对其中两个位置的数进行交换(且只能交换一次),从而得到b数组,问怎样才可以使b中的所有连续子序列成为排列的个数最少,输出交换的位置。

思路:

我们可以发现,不管怎么交换,我们总会有长度为1的排列和长度为n的排列。

倘若我们要得到长度大于1的排列(假设需要得到长度为k的排列),那么1和2必须得在里面,而且k+1这个数必须不在里面。

所以我们可以直接将n这个数放到1和2之间,这样便是最优情况。

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;cin>>t;while(t--){int a[200001];int n;cin>>n;for(int i=1;i<=n;i++){int x;cin>>x;a[x]=i;}if(a[n]>a[1]&&a[n]>a[2])cout<<a[n]<<" "<<max(a[1],a[2])<<endl;else if(a[n]<a[1]&&a[n]<a[2])cout<<a[n]<<" "<<min(a[1],a[2])<<endl;elsecout<<1<<" "<<1<<endl;}return 0;} 


http://www.ppmy.cn/news/717753.html

相关文章

大数据面试题:Kafka的Message包括哪些信息

面试题来源&#xff1a; 《大数据面试题 V4.0》 大数据面试题V3.0&#xff0c;523道题&#xff0c;679页&#xff0c;46w字 参考答案&#xff1a; 一个 Kafka 的 Message 由一个固定长度的 header 和一个变长的消息体 body 组成&#xff0c;header 部分由一个字节的 magic&…

DLSS/NIS/FSR

免费的性能增强怎么来的&#xff1f; 有哪些技术&#xff1a; 英伟达 的 DLSSAMD 的 FSR英特尔 的 XeSS 原理&#xff1a; DLSS技术利用 Tensor Core来提升游戏帧数。DLSS全称 Deep Learning Super Sampling&#xff0c;即深度学习超级采样&#xff0c;先渲染低分辨率的图像…

5G,会消灭电视吗?

11月15日&#xff0c;在2019中国移动全球合作伙伴大会上&#xff0c;中国移动副总裁简勤称&#xff0c;预计到2020年将销售1亿部5G手机、5000万台家庭泛智能终端以及1500万行业模组。从这一计划可以看到&#xff0c;现阶段5G最典型的应用场景是智能手机&#xff0c;第二场景是家…

优秀的 Verilog/FPGA开源项目介绍(十一)- SPI/SPI FLASH/SD卡

优秀的 Verilog/FPGA开源项目介绍(十一)- SPI/SPI FLASH/SD卡 0 官网 https://www.spi-inc.org/ https://www.2spi.com/ Software in the Public Interest (SPI) 是一家在纽约州注册的非营利性公司,其成立的目的是为开发开源软件和硬件的组织提供财政赞助。我们的使命是通过…

海外权威媒体连续三年颁奖中国电视,这项新技术很关键

有关中国智造的故事&#xff0c;总是一个比一个精彩。经历行业地位上升和技术研发转型期后&#xff0c;中国的科技企业开始以充沛热情向市场推出越来越多的好产品&#xff0c;甚至走出国门在国际市场上获得领先地位&#xff0c;令一众国际竞争对手汗颜。 有这么一个来自中国的电…

AI成为强大的像素绘图工具

借助神经渲染技术&#xff0c;AI以高达530%的渲染加速击败像素图形处理。 2022年9月20日&#xff0c;英伟达的应用深度学习副总裁布莱恩•卡坦扎罗&#xff08;Bryan Catanzaro&#xff09;在推特大胆声称&#xff0c;在《传送门》RTX版等GPU密集的游戏中&#xff0c;屏幕上的8…

极客日报:腾讯回应微信刷掌支付;iPhone 13 Pro或提供1TB版本;Git 2.33 发布

一分钟速览新闻点&#xff01; 腾讯回应微信刷掌支付&#xff1a;暂无应用计划 华为以白金会员身份加入 OpenChain 项目 中国电信全面启动 2022 年度校园招聘 BOSS 直聘宣布取消大小周 员工薪资不变 腾讯新专利获批&#xff1a;助你实现多个红包连续领 中国 AI 论文引用次数超过…

英特尔On技术创新峰会:携手开发者打造开放生态系统

2021年10月28日&#xff0c;英特尔On技术创新峰会&#xff08;Intel Innovation&#xff09;正式开幕&#xff0c;归根溯源重新拥抱广大开发者&#xff0c;强调对开发者社区的承诺&#xff0c;以及英特尔横跨软件和硬件的开发者至上的理念。在此次峰会期间&#xff0c;英特尔发…