完美的序列

2021-07-24 09:53:16 字數 1041 閱讀 9672

題目描述:

lyk 認為乙個完美的序列要滿足這樣的條件:對於任意兩個位置上的數都不相同。然而並不是所有的序列都滿足這樣的條件。

於是 lyk 想將序列上的每乙個元素都增加一些數字(當然也可以選擇不增加),使得整個序列變成美妙的序列。

具體地, lyk 可以花費 1 點代價將第 i 個位置上的數增加 1,現在 lyk 想花費最小的代價使得將這個序列變成完美的序列。

輸入格式:

第一行乙個數 n,表示數字個數。

接下來一行 n 個數 ai 表示 lyk 得到的序列。

輸出格式:

乙個數表示變成完美的序列的最小代價。

輸入樣例:

4 1 1 3 2

輸出樣例:

3資料範圍:

對於 30%的資料 n<=5。

對於 60%的資料 n<=1000。

對於 80%的資料 n<=30000, ai<=3000。

對於 100%的資料 n<=100000, 1<=ai<=100000。

思路:

要讓序列變成乙個不含相同元素的

首先排序

排完序後只需讓序列變成乙個嚴格上公升的序列

現在讓a[i]=a[i]-i

這樣處理後只需讓序列變成乙個不降序列就保證了原序列是上公升序列

(因為a[i]比a[i-1]多減了1,只需a[i]不比a[i-1]小即可)

#include

#include

#include

using

namespace

std;

const

int maxn=100010;

int n,ans,a[maxn];

int main()

}cout

0;}

完美的序列

題目描述 lyk 認為乙個完美的序列要滿足這樣的條件 對於任意兩個位置上的數都不相同。然而並不是所有的序列都滿足這樣的條件。於是 lyk 想將序列上的每乙個元素都增加一些數字 當然也可以選擇不增加 使得整個序列變成美妙的序列。具體地,lyk 可以花費 1 點代價將第 i 個位置上的數增加 1,現在 ...

完美的代價

問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串 才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美 的回文串。交換的定義是 交換兩個相鄰的字元,例如 mamad 第一次交換 ad mamda 第二次交換 md madma ...

完美的素數

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 素數又稱質數。指乙個大於1的自然數,除了1和此整數自身外,不能被其他自然數整除的數。我們定義 如果乙個素數是完美的素數,當且僅當它的...