2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届 CCPC 河南省大学生程序设计竞赛(Problem B. 扫雷 1)


这道题要用到贪心,如果后面没有比该点更便宜的地雷探测器器了,我们应该把钱全部买这个探测器,我最开始用完全背包,但明显超时了

#include<iostream>
#include<cstring>
using namespace std;
#define int long long
const int N=2*1e5+5;
int n,m; 
int a[N];
int dp[N];

signed main(){
   cin>>n;
   for(int i=1;i<=n;i++)cin>>a[i];
   memset(dp,0x3f,sizeof(dp));
   dp[n]=a[n];
   for(int i=n-1;i>=1;i--)dp[i]=min(dp[i+1],a[i]);
   int money=0;
   int ans=0;
   for(int i=1;i<=n;i++){
    money++;
    if(a[i]==dp[i]&&money>=a[i]){//dp[i]==a[i]说明后面没有比a[i]更便宜的了;
        ans+=money/a[i];
        money%=a[i];
    }
   }
   cout<<ans;
    return 0;
}
posted @ 2025-03-06 21:54  郭轩均  阅读(54)  评论(0)    收藏  举报