原題是日文的,我就不翻譯了(
題意:給出壓縮後的影象,求壓縮前的影象從題意中第二句話可以初步推斷出,只要是周圍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 先把四個方向滿足題意所需要走的個數初始化為零 然後根據給出...