AT1899 畫像処理高橋君 題解

2021-10-19 09:19:13 字數 1431 閱讀 8447

原題是日文的,我就不翻譯了(

題意:給出壓縮後的影象,求壓縮前的影象

壓縮是指對於各個畫素,在其周圍8個方向的畫素中,只要有乙個黑色畫素,其畫素就會變黑的處理

從題意中第二句話可以初步推斷出,只要是周圍8個方向上都是黑色的畫素就是壓縮前存在的黑色畫素

例如

###..

###..

.....

壓縮前的影象就是

##...

.....

.....

這麼說來只要掃一遍,把和白色畫素相接的黑色畫素全部變為白色不就好了?

但是如果是下面這種情況

###.

##.#

..##

..##

用剛才的思路做,會得到這樣的影象

#...

....

....

...#

這樣就出現了問題

如果把得到的這個影象壓縮,得到的應該是

#...          ##..

.... -> ##..

.... ..##

...# ..##

這樣就還得再檢查一遍得到的影象是否合法

**如下

#

include

using

namespace std;

int n,m;

char a[

205]

[205];

//記錄壓縮後的影象(即輸入的影象)

char b[

205]

[205];

//用於輸出壓縮前的影象

int dx[9]

=;//八個方向+原地

int dy[9]

=;signed

main()

if(flag)b[i]

[j]=

'.';

//如果這個畫素本來就是白的,或者這是個和白色畫素相連的黑色畫素

else b[i]

[j]=

'#';

//不和白色畫素相連的黑色畫素}}

for(

int i=

0; i(!flag)

//得到的壓縮前的影象 無法壓縮為 壓縮後的影象}}

} cout<<

"possible"

for(

int i=

0; i) cout<}return0;

}

BZOJ1899 午餐(動態規劃)

bzoj 我太弱了 這種d p 完全做不動。首先,感性理解一些 如果所有人都要早點走,那麼,吃飯時間長的就先吃 吃飯時間短的就晚點吃 所以,按照吃飯時間排序 我們不難得出乙個每個人吃完飯的時間 之和前面所有人的打飯的時間和有關 所以 f i j k 表示當前做到第 i 個人,第一列,第二列前面的人的...

UESTC 1899 P醬的冒險旅途

p醬的冒險旅途 p醬是個可愛的男孩子,有一天他在野外冒險,不知不覺中走入了一塊神奇的地方。他在0時刻進入這個地方,每一時刻他都只能向某一特定的方向移動長度為1的距離,當然他也可以選擇不移動。移動需要花費1的時間。各個時刻他允許移動的方向由乙個字串給出,字串只包含u d l r四種字元,其中 u 表示...

uestc 1899 P醬的冒險旅途

本題的策略就是 在某個方向選擇行走而不是停留,當且僅當行走能夠縮短p醬與出口的距離 這裡的 距離 有乙個專有的稱呼,稱為曼哈頓距離 manhattan distance 它的定義是兩點間橫座標差的絕對值與縱座標差的絕對值之和,即 dx dy 先把四個方向滿足題意所需要走的個數初始化為零 然後根據給出...