NOIP模擬題 集結螞蟻

2022-08-17 10:33:16 字數 2886 閱讀 8669

【題目描述】

雄心勃勃的企業家達倫·克勞斯發現了皮姆博士有關縮小原子間距離的公式並

研發出新一代微型「黃蜂戰士」,皮姆博士擔憂**會引發不可挽回的後果,於是

找到斯科特並使他成為了新一代「蟻人」。正逢克勞斯與外商交易黃蜂戰衣的那天,

斯科特受命前往摧毀黃蜂戰衣並銷毀資料,然而乙個人的力量是渺小的,斯科特需

要走入乙個巨大的蟻穴去召喚螞蟻與他共同作戰。

蟻穴是乙個巨大複雜的地帶,由n 行m 列組成,每個偶數行存在至少乙個螞蟻

聚集地,同一行的不同螞蟻聚集地以一堵牆隔開,每個螞蟻聚集地的大小為si;

每個奇數行存在連線相鄰偶數行中螞蟻聚集地的路徑,乙個螞蟻聚集地可能有多條

路徑可以到達。

蟻人可從蟻穴的第一行任何一路口出發,由於時間緊迫,蟻人只能向下一行走,

在這種情況下,蟻人希望你能告訴他如何使經過的螞蟻聚集地大小之和最大,從而

召喚最多的螞蟻。

【輸入】

第1 行包含兩個用空格隔開的整數n,m,意義見描述。

第2 到n+1 行,每行m 個字元(無間隔)且僅存在0 和1:同一偶數行中連

續x 個0 組成乙個大小為x 的螞蟻聚集地,1 為牆體;奇數行中0 表示蟻人可以從

此處通過。

【輸出】

對於每組資料輸出乙個整數,表示經過路徑中最大聚集地之和(不包含聚集

地之間的路徑)。若蟻人無法到達最後一行則請輸出「-1」。

4【輸入樣例】

10 10

1111101111

1100001011

1101111111

1100000101

1110110111

1000110001

1101111011

1101000011

1101011111

1101010001

【輸出樣例】

17【樣例解釋】

【資料規模】

對於20%的資料,n≤20,m≤20

對於50%的資料,n≤20,m≤100

對於100%的資料,n≤5000,m≤2000,保證n 是乙個偶數,路徑的數量不多於1×106

在輸入的時候存每一行連續0的個數,若其中有乙個0上面也是0(即是可以走的),便更新它的權值,到最後或碰到1時,看上乙個可行點

是否可以更改權值。

後面直接就每一行每一行搜尋了,由於存的是區間,每個區間只掃一次,所以最大時間複雜度o(mn)。

好像用建圖spfa做也可以。

1 #include2 #include3 #include4

using

namespace

std;

5const

int maxn=5005;6

const

int maxm=2005;7

int map[maxn][maxm];//

1000w

8int pos[maxn][maxm>>1];//

500w(不連在一起的位置)

9int f[maxn][maxm];//

1000w

10int w[maxn][maxm>>1];//

500w

11int

n,m;

12int

main()

1333

if(map[i][j]==1&&pos[i][pos[i][0]]+t>=j&&pd==true)34

38if(map[i][j]==0&&map[i-1][j]==0)//

可以標記

3946

else

if(pos[i][pos[i][0]]+t-1>=j)

4750

else

51 pos[i][++pos[i][0]]=j; 52}

53if(pd==true&&j==m&&map[i][j]==0)54

57}58}

59for(int i=1;i<=m;i++)

60 f[1][i]=-1;61

for(int i=2;i<=n;i++)

62for(int j=1;j<=pos[i][0];j++)

63k++;

76while(map[i][k2]==0)77

k2--;

82if(er==0)continue;83

else

8488}89

else

90k++;

98while(map[i][k2]==0)99

k2--;

103for(int

as=k;as

<=k2;as++)

104 f[i][as]=v;

105}

106}

107else

108k++;

117while(map[i][k2]==0

)118

k2--;

123if(v==0)continue

;124

else

125129

} 130

}131

int ans=0

;132

for(int i=1;i<=m;i++)

133if(f[n][i]>ans)ans=f[n][i];

134if(ans==0

)135 printf("-1"

);136

else

137 printf("%d"

,ans);

138return0;

139 }

NOIP模擬題 連通

給定乙個無向圖,請編寫乙個程式實現以下兩種操作 1 d x y,從原圖中刪除連線x和y頂點的邊。2 q x y,詢問x和y頂點是否連通。這也是連通問題,考慮用並查集解決。但是這是刪除的問題耶,怎麼辦?考慮將刪除變為連通,能不能將所有操作給反過來,從最後乙個操作開始處理。當然是可以的。include ...

Noip模擬題 山峰

description在n m的棋盤上不重複的填1到n m 如果乙個數字比周圍的八個數字大,那麼他就是乙個山峰。現在告訴你所有山峰的位置,問你填數的方案數mod 12345678 input 輸入第一行兩個數字 n m意義如題目描述。接下來n 行,每行 m個字元,表示非山峰,x 表示山峰。1 n 4...

NOIP模擬題 訂餐

題目描述 這個週末,joe 一如既往的拿出了外賣的點餐單。選單上從上到下列著 n 個菜,每個菜 joe 會列出乙個美味值。joe 這次希望從選單上連續地點 k 個菜,並且美 味值之和最大。但在計算美味值之和時,joe 有自己的一套計算方法 由於他會按照順序享受這 k 個菜,並且越吃越後面的菜他就越享...