關於序列變化問題的總結

2022-03-29 13:56:42 字數 2260 閱讀 8148

類似於把原序列改成目標序列的問題 感覺這種思維題目 有必要總結一下qwq 而且總結一下思考問題的方式是有必要的 發現這些問題是有一定的通解的

下面的問題 感興趣的可以找到出處 這裡我只討論思考問題的方式

首先 是一道思考題

我們知道 目標序列就是 a,a+1,a+2,a+3,.....a+n/2,a+n/2-1,n+n/2-2....a ,題目所求為修改多少個數字 可以使得原序列滿足這樣的條件;

那麼 先考慮乙個問題 如果題目給定的序列 就是符合題意的序列 我們顯然 將原序列 和 目標序列 做差之後發現 我們將會得到乙個 新序列 而這個新序列 形式必然是 :m,m,...,m;

每個數字必定相同 那如果原序列只有乙個數字不符合題意 那我們得到的 做差序列 也必定只有乙個數字和其他數字不一樣 那麼只需要修改這個不同的數字的位置的數字即可;

換句話說 其餘相同的數字個數是最多的 我們選擇保留了下來這些位置  那麼修改次數 顯示是長度-這個最長的長度;

所以 我們 首先 對原序列和目標序列 做差 得到 做差數列 我們知道這個做差數列上 相同數字最多的位置無需修改 所以我們要找到這個最長的數列;

具體是為什麼呢 你不妨先思考一下這個問題 我們開乙個陣列num 記錄做差之後的值的出現的次數;

如果從原序列ai到目標序列bi 需要改變的數值t 那麼對於在num陣列中t的個數 就是我們沒有必要改變的原序列的個數 那麼對於每乙個就是n-num[t] 我們只需要取min 那麼就是找到最長的那個相同數字的長度;

為了避免出現負數的情況 我們考慮加上乙個較大值;好好考慮一下我們思考問題的方式 試著運用這種思想 可能現在不是很熟練 我們再看一道例題;

序列變化: 我們有乙個數列a1,a2...an,你現在要求修改數量最少的元素,使得這個數列嚴格遞增。其中無論是修改前還是修改後,每個元素都必須是整數。求最小修改次數;

我們上一道題目並沒有直接求出改變多少 而是求出了最多保留多少位置 我們試著運用這個思想 

首先 我們不妨自己構造一組 嚴格單調的序列 1,2,3,4,5....n;

我們嘗試將原序列和這個構造出來的序列做差 那麼我們得到乙個新序列 記作 如果原序列單調 那麼這個b序列一定是單調不下降的 而我們發現這些 非嚴格遞增的位置我們是不需要修改的

所以我們保留下來b序列最長的不下降部分 那麼答案就是序列長度-b序列的最長不下降子串行的長度;

我們看乙個擴充套件 說白了都是一樣的 模擬賽考了 寫了個stl就可以了 題目將修改後仍然保證是正整數這是唯一的不同之處;

我們依舊按照上面的方法 得到做差序列 我們發現如果出現 a[i]-i<0 的情況 一定要修改的 我們考慮將這些數字剔除 那麼我們考慮剩下的部分 最少修改多少 那麼我們就轉化成了上一道題目

其實 也就是求出來b首項為非負整數的最長不下降子串行 然後用序列長度減去 和上乙個問題其實上是一樣的;

所以今天總結一下就是 說 對於乙個序列變化成什麼序列的問題 我們考慮將原序列和目標序列放在一起進行對比 而且將最少修改多少轉化成最多保留多少位置進行求解問題

並且嘗試 做一下他們的差值 觀察是否有什麼不同 嘗試多構造一些樣例 注重觀察 還要積累 比如我原來做過這個題目簡化版 所以我考場上就沒想 就構造出來了序列

這是這樣的問題比較好切入的思路 我們嘗試思考 如果原序列直接滿足要求 如果原序列 只有乙個不滿足 我們考慮這樣的變化為 讓由原來留下來的位置變成留下來多少少了多少

我們就能分析出來這樣的問題;

趁著這個 我分析一下昨天的模擬賽(爆零賽)?? 都出點類原題可太水了  t1 不開freopen t3 開到ll 導致mle 本著三百的心情交了 0/100/0 下次要算對空間 提前十分鐘檢查 就這樣8 5555

看見同學們都寫 題解了 我也寫一下8

t1 顯然發現是偶數的時候 小偷偷不到錢 顯然是奇數的時候 我們找到每乙個奇數字置的錢-1的最大值 因為不能偷到0 顯然這是正確的 因為你 偷奇數字置 左右都是偶數字置 那麼 我們都可以將當前補齊

t2 就是我上面研究的情況 構造序列 忽略小於0的數字 求最長不下降子串行即可

t3 乙個dp 

然後 我寫過這個題目的題解 考場上這個題目 多了乙個最短路 預處理即可 n l打反 調了半個小時hh 最後陣列開大了 mle qwq;

總的來說 題目是比較簡單的 我的神仙同學們 都ak了 qwq

關於排名問題的總結

select rank over partition by kemu order by fenshu desc rk,t.from abcd t 當出現並列的情況時,名次會缺失 1 2 2 4 5 5 7 select dense rank over partition by kemu order ...

最長上公升子串行的變化

題目 hdu1160 題意 一群老鼠,每個老鼠有兩個引數 重量和速度。尋找重量遞增且速度遞減的最長的子串行,輸出該序列的座標順序。解答 先排序,然後最長上公升子串行。注意 排序後坐標會改變,因此,應當在結構體中引入乙個新的變數index,儲存它的原始位置。儲存路徑 記錄比當前位置小的上乙個位置的左邊...

關於adb devices出現的問題總結

關於adb devices無法找到裝置有以下幾種解決方案 1 先adb kill server,再adb start server 2 出現如下問題 1 netstat aon findstr 5037 先查詢5037埠被什麼程序占用 2 tasklist findstr 2748 2048指占用的...