Luogu 2259 Oibh 新型計算機

2021-08-29 05:29:24 字數 2330 閱讀 6762

bzoj傳送門

tim正在擺弄著他設計的「計算機」,他認為這台計算機原理很獨特,因此利用它可以解決許多難題。  但是,有乙個難題他卻解決不了,是這台計算機的輸入問題。新型計算機的輸入也很獨特,假設輸入序列中有一些數字(都是自然數——自然數包括0

00),計算機先讀取第乙個數字s

1s_1

s1​,然後順序向後讀入s

1s_1

s1​個數字。接著再讀乙個數字s

2s_2

s2​,順序向後讀入s

2s_2

s2​個數字……依此類推。不過只有計算機正好將輸入序列中的數字讀完,它才能正確處理資料,否則計算機就會進行自毀性操作!  tim現在有一串輸入序列。但可能不是合法的,也就是可能會對計算機造成破壞。於是他想對序列中的每乙個數字做一些更改,加上乙個數或者減去乙個數,當然,仍然保持其為自然數。使得更改後的序列為乙個新型計算機可以接受的合法序列。  不過tim還希望更改的總代價最小,所謂總代價,就是對序列中每乙個數操作的引數的絕對值之和。

寫乙個程式:   從檔案中讀入原始的輸入序列;   計算將輸入序列改變為合法序列需要的最小代價;   向輸出檔案列印結果。

輸入格式

輸入檔案包含兩行,第一行乙個正整數n

nn,n

<

1000001

n<1 000 001

n<10

0000

1。  輸入檔案第二行包含n

nn個自然數,表示輸入序列。

輸出格式

僅乙個整數,表示把輸入序列改變為合法序列需要的最小代價,保證最小代價小於109

10^9

109。

輸入樣例#1:

4

2 2 2 2

輸出樣例#1:
1
如果我們把每個點以及其可以到達點連起來, 我們可以得到乙個dag。 更改數字可以等價於:我們可以花費1

11的代價向後走一步, 或向前走一步。 這樣我們就建立了乙個最短路模型, 暴力連邊最短路即可。

注意我們必須要先走一條原來的邊才能走邊長為1的邊, 所以邊有乙個左邊界, 連邊的時候應該注意。

**如下:

#include

#include

#include

#include

#include

#include

#include

#define r register

#define in inline

#define w while

#define gc getchar()

#define mx 1005000

template

<

class

t>

in void

in(t &x)

struct pass

;in bool

operator

<

(const pass &x,

const pass &y)

__gnu_pbds::priority_queue q;

__gnu_pbds::priority_queue

::point_iterator hdle[mx]

;int head[mx]

, dis[mx]

, pre[mx]

, nex[mx]

;bool vis[mx]

;int dot, cnt;

struct edge edge[mx <<3]

;in void

add(r int from, r int to, r int val)

, head[from]

= cnt;

}void

dj(r int st)

), dis[st]=0

; pass cur; r int now, i;

w (!q.empty()

)), vis[edge[i]

.to]

=true

;else q.

modify

(hdle[edge[i]

.to],)

;}}}

printf

("%d"

, dis[dot +1]

);}int

main

(void

)for

(r int i = r; i <= dot;

++i)

add(i, i +1,

1),add

(i, i -1,

1);dj

(1);

}

COGS 2259 異化多肽

qaq 很明顯我們是可以搞一下指數生成函式的 然而複雜度是o m n2 o m n2 無法優化 換個方式做生成函式 a x 表示 質量為 x 的 氨基酸有幾類 b x i 0 a x i b x i 0 a x i 顯然答案是b x 中的n次項係數 上面的式子即為乙個無限等比數列求和 度度的公式s ...

COGS2259 異化多肽

傳送門 聽說是多項式求逆的模板題,以後不怕沒地方練多項式求逆啦哈哈 我們設使用乙個氨基酸能組成質量為 n 的多肽數量這個數列為 設它的生成函式為 a x 顯然有 begina x sum infty sum m c j i end 即 a x 的 i 次方係數即為相對分子質量為 i 的氨基酸數量。我...

Poj2259(團體佇列)

題目大意 有t個團隊的人排隊,每有乙個新來的人時,如果他有隊友正在排隊,那麼他就會站在他隊友的後面。如果沒有隊友,就站在隊伍的最後面。輸入每個團隊中所有隊員的編號,要求支援如下3中指令 enqueue x 編號為x的人進入長隊 dequeue 長隊的隊首出隊 stop 停止模擬。對於每個dequeu...