# Greedy# Simulation

g420 - PB.BAD question

🔗 前往 ZeroJudge 原題

題目描述

題目描述了菜雞蛋玩東方project遊戲的情況。給定初始生命值、每一關的生命損失和每一關結束後的生命獎勵,要求計算菜雞蛋最多能通過多少關,前提是生命值不能變為負數。

解題思路

這題可以使用貪心策略,模擬遊戲過程。從第一關開始,依次扣除生命值,如果生命值不為負數,則獲得獎勵。重複此過程,直到生命值變為負數或到達最後一關。記錄通過的關卡數,即為答案。

複雜度分析

  • 時間複雜度: O(n)
  • 空間複雜度: O(n)

程式碼

#include <iostream>
using namespace std;
long long ans,n,m,a[1000005],x;
int main(){
	cin.tie(0); ios::sync_with_stdio(false);
	cin >> n >> m;
	for(int i=1;i<=n;++i){
		cin >> a[i];
	}
	for(int i=1;i<=n&&m>=0;++i){
		++ans;
		m-=a[i];
		if(m<0)break;
		cin >> x; 
		m+=x;
	}
	cout << ans;
}

Discussion