晶元製作(插頭DP寫法)

2021-05-25 10:05:54 字數 1407 閱讀 7522

zjn是

qdez

有名的帥哥之一,作為學生會的重要幹部,經常接到豐富多彩的學生活動的通知,下面就是一項科技實踐活動

~~~~~

計算機的大腦通常被稱為cpu

。現在國家xx

局交給zjn

乙個重要任務,要求他製作一種新型的

cpu,幸運的是,

cpu研究中心已經將好多個

cpu核心蝕刻在矽片上了,這種矽片很可愛,它是由3n2

個核心拼成的l

型。當n=5

的時候,矽片的形狀如下圖所示。

zjn的任務就是把

cpu核心從矽片上切割下來,封裝在乙個銅盒子裡拿出來賣錢。

由於技術原因,cpu

的蝕刻有可能失敗,如果某個

cpu核心蝕刻失敗了,它就不能賣錢了。在上圖中,有

3個核心蝕刻失敗,蝕刻失敗的核心的座標分別是c4,

f2,g5。顯然,如果矽片上有m個

cpu核心蝕刻失敗了,則有3n2

-m個核心是可以賣錢的,如果每個

cpu內只裝

1個核心(貌似這就是傳統的單核處理器

~),此時你就可以做出3n2

-m個cpu

。zjn還是日理萬機的忙,於是雇用了小弟你來替他完成這個東西。他把所有人物都交給了你,去幹更重要的事情了。你的任務就是幫助

zjn啊

~~~突然,國家發展和改革委員會決定要發展雙核處理器技術。東風來,萬樹cpu

花開,你要做的是雙核處理器了。上司告訴你,如果在

l型矽片上任意兩個相鄰的

cpu核心都是完好的,那麼你就可以把它們一起切下來做成乙個雙核

cpu。所謂相鄰,指的是

cpu核心有一條公共邊界。

由於你的薪水是按照做出的cpu

的個數決定的,現在你想算算最多能切出多少個雙核的

cpu。

雙核,無限可能~~~

【輸入檔案】  

zjn.in

第一行包含2

個整數n,k

以下k行,每行包括乙個字母和緊跟著的乙個整數,代表乙個蝕刻失敗的

cpu的座標。檔案保證座標在

l型矽片內。

【輸出檔案】  

zjn.out

一行,僅包含乙個整數,代表能切出的最多雙核cpu

個數。【樣例輸入】

2 3 d1

a3 c2

【樣例輸出】 4

【資料範圍】

在100%

的資料中

2<=n<=7, 0.1n

2<=k<=3n2。

測試資料中n

是平均分布的。

分析:noip時的練習題,以前用簡單的位運算做的複雜度太高了。。。學了插頭dp,許多類似的題都迎刃而解了

嘿嘿。。。想做的可以找我要資料。。。

**:

插頭DP 入門

強烈推薦 hdu 1693 eat the trees 多迴路的不用判聯通狀態,二進位制即可,轉移情況2 2種。時間o n m 2 n 空間o n 2 n 插頭dp include include const int maxm 13 const int maxn 1 12 typedef long ...

插頭Dp總結

題目大意 給出n m的方格,有些格仔不能鋪線,其它格仔必須鋪,可以形成多個閉合迴路。問有多少種鋪法?插頭dp板子題,題目要求可以是多個迴路,只需要兩個狀態,代表是否有插頭即可 plug 1 plug 2 0 0 新建乙個插頭插向兩邊 0 1 轉 不轉彎 1 0 同上 1 1 合併插頭 題目大意 乙個...

總結 插頭 dp

集中做完了插頭 dp 寫一下題解。一開始學的時候還是挺矇的。不過後來站在輪廓線 dp 的角度上來看就簡單多了。其實就是一種聯通性 dp 只不過情況比較多而已了。本來轉移方式有兩種。逐行和逐格轉移。不過逐行轉移因為分類太多所以被捨棄了。一般的插頭 dp 採用逐格轉移。插頭表示已經進入當前格仔的狀態,而...