【題目描述】
雄心勃勃的企業家達倫·克勞斯發現了皮姆博士有關縮小原子間距離的公式並
研發出新一代微型「黃蜂戰士」,皮姆博士擔憂**會引發不可挽回的後果,於是
找到斯科特並使他成為了新一代「蟻人」。正逢克勞斯與外商交易黃蜂戰衣的那天,
斯科特受命前往摧毀黃蜂戰衣並銷毀資料,然而乙個人的力量是渺小的,斯科特需
要走入乙個巨大的蟻穴去召喚螞蟻與他共同作戰。
蟻穴是乙個巨大複雜的地帶,由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 #include4using
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 個菜,並且越吃越後面的菜他就越享...