zoukankan      html  css  js  c++  java
  • Codeforces-893D. Credit Card

    传送门

    n天,银行卡上限金额d元,任何时刻卡内金额超过d时即输出-1。每天早可向卡内充入任意金额,之后会有数字,正数使卡内金额增加,负数代表支出,为0时需检查银行卡,此时不允许卡内金额为负。求最少的向卡内充钱的次数。

    先检查是否会超过额度,在确保不超过时,每次我们在检查时如果卡内金额为负,就在当天早把金额调整为d。之后的操作如果金额超过d,说明之前钱充多了,此时把钱调整为d就行了。

    #include <map>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define INF 0x3f3f3f3f
    using namespace std;
    typedef long long LL;
    
    const int maxn = 1e5 + 10;
    int A[maxn];
    int n, d;
    
    
    int main() {
        scanf("%d%d", &n, &d);
        for (int i = 0; i < n; i++) {
            scanf("%d", &A[i]);
        }
        int ans = 0;
        int sum = 0;
        bool flag = 1;
        for (int i = 0; i < n && flag; i++) {
            sum += A[i];
            if (!A[i] && sum < 0) sum = 0;
            if (sum > d) {
                flag = 0;
            }
        }
        if (flag) {
            sum = 0;
            for (int i = 0; i < n; i++) {
                sum += A[i];
                if (sum > d) {
                    sum = d;
                }
                if (!A[i] && sum < 0) {
                    ans++;
                    sum = d;
                }
            }
            printf("%d
    ", ans);
        } else {
            puts("-1");
        }
        return 0;
    }
  • 相关阅读:
    Windows下git使用代理服务器的设置方法
    SQL backup&restore
    css3 随记
    HTML5 上传图片预览
    jQuery.event.move
    css3 html5 手机设备 列表的弹回和加速移动
    16进制与utf-8
    android 使用现成做get请求
    android 往sd卡中写入文件
    android 遍历控件
  • 原文地址:https://www.cnblogs.com/xFANx/p/8796593.html
Copyright © 2011-2022 走看看