Toy Bricks(HZOI模擬試題)

2021-08-21 18:56:51 字數 1487 閱讀 6169

ray又在npc問題了:這裡有乙個箱子,還有若干個玩具。 

我們可以假設玩具的數量是沒有上限的。我們還知道這個箱子是不規則的,或者可以說,他的外形比較像乙個矩形,但是內部卻有很多突起,這些突起很可惡,他可以一直突到玩具的頂蓋部。為了簡化這個npc問題,ray只保留了一種形狀的玩具。

ps:玩具為「十」字形

ray想知道對於乙個給定的箱子,最多可以放下多少個這樣的玩具。

第一行兩個用空格隔開的整數n 和m表示玩具箱的長度和寬度

第二行到第n+1行,每行m個用空格隔開的字元「#」「.」;「#」表示這裡是乙個障礙物。「.」表示這裡可以放東西。

一行乙個整數表示最多的玩具個數

5 4

#.#.

...#

#..#

#...

##.#

20<=n<=100

0<=m<=10

發現這道題和炮兵陣地很像,而且一開始我又陷入了類似炮兵陣地的誤區(只開兩維,詳見炮兵大坑),和炮兵不同的是,迷之突起會相互影響無法相容,因此我們記下每個凸起位置= =,dp的時候判斷一下就可以了。

#includeusing namespace std;

#define inc(i,l,r) for(register int i=(l);i<=(r);++i)

int n,m;

int cannot[110];

int cnts,p[30],st[30],num[30];

inline bool ok(int s)

if(cnt%3)return 0;

return 1;

}inline void cull(int idx,int s)

st[idx]=tmps,num[idx]=cnt/3;

}int ans,f[110][30][30];

inline void init()

inc(i,1,cnts)if(!(st[i]&cannot[2])&&!(p[i]&cannot[1])&&!(p[i]&cannot[3]))

inc(j,1,cnts)if(!(st[j]&cannot[1])&&!(p[j]&cannot[2])&&!(p[j]&st[i]))f[2][i][j]=num[i];

}inline void solv()

} }inc(i,2,n-1)inc(j,1,cnts)inc(k,1,cnts)ans=max(ans,f[i][j][k]);//在下懶得判了

cout<}int main()

/*6 5

##.##

#...#

##..#

#....

....#

#.###

37 7

.......

.......

.......

.......

.......

.......

.......

6*/

模擬訊號 模擬訊號與模擬電路

訊號 用來攜帶資訊的物理量。電訊號 隨著時間變化的電壓或電流,在數學上,我們可以通過函式來表達這種變化情況,因此我們可以畫出波形。電子電路中的訊號分類 數碼訊號和模擬訊號。模擬訊號的特點 連續性,無論是在時間上還是在數值上。大多數的物理量均為模擬量,如溫度 壓力 流量.非電的物理量可以通過感測器變換...

CG物理模擬 風箏模擬

放風箏是一項起源於中國的傳統娛樂專案,隨後推廣到世界各地。按作用可以分成節日慶典祝福風箏,體育競技類,單純的娛樂向風箏等。要想用計算機較為真實的模擬風箏運動,首先我們先得搞清楚風箏的受力情況。飛行原理 如圖 b 所示,風箏在天空中飛翔時所受的力為 風箏線的張力,尾巴的張力,自身的重力,以及風的作用力...

AcWing 模擬棧 棧 模擬

時 空限制 1s 64mb 實現乙個棧,棧初始為空,支援四種操作 1 push x 向棧頂插入乙個數x 2 pop 從棧頂彈出乙個數 3 empty 判斷棧是否為空 4 query 查詢棧頂元素。現在要對棧進行m個操作,其中的每個操作3和操作4都要輸出相應的結果。第一行包含整數m,表示操作次數。接下...