NOIP普及組模擬 回文陣列

2021-08-10 00:19:13 字數 876 閱讀 8055

時間限制: 1 sec 記憶體限制: 128 mb

給定有n個整數的陣列a,下標從1到n。如果對每乙個下標i均滿足a[i] =a[n-i+1],則稱陣列是回文的。

例如,陣列a=就是回文陣列。

如果陣列a不是回文的,可以採用合併兩個相鄰元素的方法去得到回文陣列。注意,每操作一次,陣列的元素數量減少1。

例如,陣列a=不是回文陣列,但是通過合併a[1]和a[2],得到就是回文陣列了。

顯然,無論給出怎樣的陣列元素,最多經過n-1次操作,合併為乙個數時,陣列a一定是回文陣列了。因此,本題一定有解。

然而問題來了:對於給定的陣列a,最少經過多少次操作,能讓a變成回文陣列?

第1行:1個整數n,表示陣列a的元素個數

第2行:n個空格分開的整數,表示陣列a

1 <= n <= 10^6

1 <= a[i] <= 10^9

第1行:1個整數,表示最少的操作次數

4 1 4 3 2

本來很水的一道題,而且考試時思路與正解沾了點邊,最後寫著寫著就寫成了暴力[手動笑哭]。

想想回文陣列要滿足的條件:首尾相等。而我們要處理的陣列中,如果首尾不相等,顯然就需要更改。

分三種情況:

**沒什麼好說的。

#include

int read()

while(s>='0'&&s<='9')

return x*f;

}#define maxn 1000000

int n;

int a[maxn+5];

int main()

else head++,tail--;

}printf("%d",ans);

}

NOIP2016普及組 回文日期

演算法標籤 列舉,模擬 題目描述 在日常生活中,通過年 月 日這三個要素可以表示出乙個唯一確定的日期。牛牛習慣用 8 位數字表示乙個日期,其中,前 4 位代表年份,接下來 2 位代表月份,最後 2 位代表日期。顯然 乙個日期只有一種表示方法,而兩個不同的日期的表示方法不會相同。牛牛認為,乙個日期是回...

2016NOIp普及組 海港 模擬

洛谷p2058 小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況 對於第i艘到達的船,他記錄了這艘船到達的時間ti 單位 秒 船上的乘 客數星ki,以及每名乘客的國籍 x i,1 ...

NOIP2016普及組 複賽 回文日期

題目自己點,複製過來會飛掉 這個題,當時想得太複雜,但沒想到竟然得了70分 真的不想說什麼 當時的思路 列舉每一天,然後開頭和末尾單獨處理,於是,洋洋灑灑寫了100多行。正確思路 列舉每一天 不要打我臉 當然方法不同,量也就50行,不難理解。第一步 輸入兩個int整數即可 因為只有8位 然後分離出它...