藍橋杯試題解答彙總鏈結
資源限制
時間限制:1.0s 記憶體限制:256.0mb
問題描述
有n×n的方格,其中有m個障礙,第i個障礙會消耗你p[i]點血。初始你有c點血,你需要從(1,1)到(n,n),並保證血量大於0,求最小步數。
輸入格式
第一行3個整數n,m,c,表示棋盤大小、障礙數量和你的血量
接下來m行,每行描述乙個障礙。包含三個整數x y p,分別表示障礙在第x行第y列,消耗血量為p。
輸出格式
如果可以到輸出步數,如果不可以,輸出"no"。
樣例輸入
10 10 10
2 8 35
1 10 25
9 9 63
5 6 46
2 6 43
8 7 92
5 3 54
3 3 22
7 9 96
9 10 13
樣例輸出18
資料規模與約定輸入資料中每乙個數的範圍。
0試題解析
步數最小就得每次只能向下或向右走,那麼這樣就很容易取動態規劃了設dp.co[i][j]為走到(i,j)位置需要的步數那麼dp.co[i][j]=min(dp.co[i-1][j],dp.co[i][j-1])但其中有障礙所以還需要儲存到每個位置的血量》0,否則說明這個點不能走
**#include
typedef
struct sstep;
intmain()
;// 棋盤chess的值為此處消耗的血量
for(i =
0;i < m;
++i)
step dp;
dp.blood[1]
[1]= c;
// 初始化血量
dp.co[1]
[1]=
0;// 初始化步數
for(i =
2;i <= n;
++i)
dp.co[i][1
]= dp.co[i-1]
[1]+
1;dp.blood[i][1
]= dp.blood[i-1]
[1]-chess[i][1
];if(dp.blood[i][1
]<=0)
}for
(i =
2;i <= n;
++i)
}else}}
else
if(dp.co[i-1]
[j]==0)
}else}}
}if(dp.blood[n]
[n]>0)
else
return0;
}
藍橋杯 演算法訓練 移動小球 C語言實現
移動小球 你有一些小球,從左到右依次編號為1,2,3,n.你可以執行兩種指令 1或者2 其中,1 x y表示把小球x移動到小球y的左邊,2 x y表示把小球x移動到小球y右邊。指令保證合法,即x不等於y。例如,初始狀態1,2,3,4,5,6的小球執行1 1 4後,小球1被移動到小球4的左邊,即2,3...
藍橋杯 演算法訓練VIP 新生舞會(C語言實現)
題目描述 新生舞會開始了。n名新生每人有三個屬性 姓名 學號 性別。其中,姓名用長度不超過20的僅由大小寫字母構成的字串表示,學號用長度不超過10的 僅由數字構成的字串表示,性別用乙個大寫字元 f 或 m 表示。任意兩人的姓名 學號均互不相同。換言之,每個人可被其姓名或學號唯一確定。給出m對 兩人的...
C語言實現 藍橋杯 演算法訓練 猴子吃包子
藍橋杯試題解答彙總鏈結 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 從前,有乙隻吃包子很厲害的猴子,它可以吃無數個包子,但是,它吃不同的包子速度也不同 肉包每秒鐘吃x個 韭菜包每秒鐘吃y個 沒有餡的包子每秒鐘吃z個 現在有x1個肉包,y1個韭菜包,z1個沒有餡的包子 問 猴子...