ABC072
ABC072
[ABC072C] Together
题面翻译
题目
给出一个长度为N,a1,a2,...,aN的整数序列。 对于每个1≤i≤N,您有三个选择:1.将1添加到ai, 2.从ai减去1 3.不执行任何操作。 在这些操作之后,您选择一个整数X并计算i的数量,使得ai = X. 通过做出最佳选择来最大化这一数量。
限制
1≤x≤10^5
0≤ai≤10^5
且ai是整数
输出
输出最大可能的数 使ai = x
样例输入
7 3 1 4 1 5 9 2
10 0 1 2 3 4 5 6 7 8 9
样例输出
4
3
感谢@牧星 提供的翻译
题目描述
長さ $ N $ の整数列 $ a_1,a_2,...,a_N $ が与えられます。
各 $ 1 < =i < =N $ に対し、$ a_i $ に $ 1 $ 足すか、$ 1 $ 引くか、なにもしないかの三つの操作からどれか一つを選んで行います。
この操作の後、ある整数 $ X $ を選んで、$ a_i=X $ となる $ i $ の個数を数えます。
うまく操作を行い、$ X $ を選ぶことで、この個数を最大化してください。
输入格式
入力は以下の形式で標準入力から与えられる。
$ N $ $ a_1 $ $ a_2 $ .. $ a_N $
输出格式
うまく操作を行い、$ X $ を選んだ時の $ a_i=X $ なる $ i $ の個数の最大値を出力せよ。
样例 #1
样例输入 #1
7
3 1 4 1 5 9 2样例输出 #1
4样例 #2
样例输入 #2
10
0 1 2 3 4 5 6 7 8 9样例输出 #2
3样例 #3
样例输入 #3
1
99999样例输出 #3
1提示
制約
- $ 1 < =N < =10^5 $
- $ 0 < =a_i < 10^5 (1 < =i < =N) $
- $ a_i $ は整数
Sample Explanation 1
例えば操作後の数列を $ 2,2,3,2,6,9,2 $ とすることができて、$ X=2 $ とすると $ 4 $ を得ることができ、これが最大です。
思路
不难想到,对整个整数序列进行遍历,记当前遍历到的数字为x
,开一个桶记录所有的可能,+1、-1、+0。这样在范围内进行遍历取最大值即可。
|
[ABC072D] Derangement
题面翻译
给你一段长为\(N\)的序列\(p\),你每次可以进行操作交换两个相邻的元素
问最少要几次才能满足任意\(i\in[1,N],p_i \neq i\)题目描述
$ 1,2,..,N $ からなる順列 $ p_1,p_2,..,p_N $ が与えられます。 次の操作を何回か ($ 0 $回でもよい) 行うことが出来ます。
操作: 順列で隣り合う二つの数を選んでスワップする。
何回か操作を行って、任意の $ 1 < =i < =N $ に対して $ p_i ≠ i $ となるようにしたいです。 必要な操作の最小回数を求めてください。
输入格式
入力は以下の形式で標準入力から与えられる。
$ N $ $ p_1 $ $ p_2 $ .. $ p_N $
输出格式
必要な操作の最小回数を出力せよ。
样例 #1
样例输入 #1
5
1 4 3 5 2样例输出 #1
2样例 #2
样例输入 #2
2
1 2样例输出 #2
1样例 #3
样例输入 #3
2
2 1样例输出 #3
0样例 #4
样例输入 #4
9
1 2 4 9 5 8 7 3 6样例输出 #4
3提示
制約
- $ 2 < =N < =10^5 $
- $ p_1,p_2,..,p_N $ は $ 1,2,..,N $ の順列である。
Sample Explanation 1
$ 1 $ と $ 4 $ を入れ替え、その後 $ 1 $ と $ 3 $ を入れ替えることで $ p $ は $ 4,3,1,5,2 $ となり、これは条件を満たします。 これが最小回数なので、答えは $ 2 $ となります。
Sample Explanation 2
$ 1 $ と $ 2 $ を入れ替えれば条件を満たします。
Sample Explanation 3
初めから条件を満たしています。
思路
对整个序列进行遍历,只要发现\(p_i=i\)的情况,直接与下一个进行交换,为什么可以这样?因为交换后肯定这两个数都不满足\(p_i=i\)。需要注意的是,最后一个数\(a_n\)没有办法与下一个数进行交换,所以只能与前一个数进行交换.
|