codeforces 893D Credit Card 贪心 思维

codeforces 893D Credit Card

  • 题目大意:

  • 有一张信用卡可以使用,每天白天都可以去给卡充钱。到了晚上,进入银行对卡的操作时间,操作有三种:
  • 1.\(a_i>0\) 银行会给卡充入\(a_i\)元
  • 2.\(a_i<0\) 银行从卡中扣除\(a_i\)元
  • 3.\(a_i=0\) 银行对你的卡进行评估,违背了规则就无权再使用此卡
  • 规则1:卡内的余额不得超过\(d\)元
  • 规则2:当\(a_i=0\)时,卡内的余额不能是负数
  • 现在问为了维持信用的平衡,最少去银行几次。(去一次,充一次钱)
  • 思路:

  • 假设不给卡充钱,光靠银行自身的操作得到的余额,设定为最小值\(minval\)。而在迫不得已为了维持平衡给卡充钱后我们有最大值\(minval\)。
  • 没有必要担心余额为负数的时候,只要我们在评估的早上充入足够多的钱就不会是负数。那么只考虑会超过余额限制\(d\)的情况。
  • 在自然状态下得到的最小值,如果在评估那天小于0,我们只要让它回到0即可。同时如果最大值也小于0,说明卡内余额定为负数,就必须需要恢复到\(d\)元。因为尽可能的充钱,就可以减少去银行的次数,此时就必须去一次银行。
  • 在\(a_i\ne0\)时,继续维护\(minval,maxval\)。如果最小值都大于了\(d\),那么说明这已经是不可能在回到\(d\)以下了,输出-1。\(minval \le d\)同时\(minval > d\),那么说明通过充钱调节,将最大值回到\(d\)。最后输出去银行的次数。
  • 代码:

    #include <bits/stdc++.h>
    using namespace std;
    int a[100005];
    int main() {
    int n,d,maxval,minval,cnt;
    scanf("%d %d",&n,&d);
    for(int i=1;i<=n;++i) {
        scanf("%d",&a[i]);
    }
    maxval=0,minval=0;
    cnt=0;
    for(int i=1;i<=n;++i) {
        if(!a[i]) {
            if(minval<0) minval=0;
            if(maxval<0) {
                maxval=d;
                cnt++;
            }
        } else {
            minval+=a[i];
            maxval+=a[i];
            if(minval>d) {
                puts("-1");
                return 0;
            }
            if(maxval>d) {
                maxval=d;
            }
        }
    }
    printf("%d\n",cnt);
    return 0;
    }
时间: 2024-08-27 14:00:58

codeforces 893D Credit Card 贪心 思维的相关文章

code force 893D Credit Card

Recenlty Luba got a credit card and started to use it. Let's consider n consecutive days Luba uses the card. She starts with 0 money on her account. In the evening of i-th day a transaction ai occurs. If ai?>?0, then ai bourles are deposited to Luba'

EC round 33 D. Credit Card 贪心

因为到为0的点,充钱的范围都是不确定的,我们维护一个满足条件的最小值以及满足条件的最大值. 当min>d时,代表已经满足条件限制了 当a[ i ] = 0 并且 max<0,代表需要充钱,充钱能够保证当前 minn=0  maxx = d 其他情况则对minn, maxx相应的增加和减少进行操作就可以了 #include<bits/stdc++.h> using namespace std; const int maxx = 2e5+6; int a[maxx]; int main

贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas

题目传送门 1 /* 2 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 3 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0),先从1开始找到已经套好的娃娃层数, 4 其他是2次操作,还要减去k-1个娃娃是只要套上就可以 5 详细解释:http://blog.csdn.net/firstlucker/article/details/46671251 6 */ 7 #include <cstdio> 8 #i

Codeforces Round #546 (Div. 2) D 贪心 + 思维

https://codeforces.com/contest/1136/problem/D 贪心 + 思维 题意 你面前有一个队列,加上你有n个人(n<=3e5),有m(m<=个交换法则,假如u在v相邻前面,那么u和v可以交换位置,问你是队列最后一个人的时候你最前可以换到前面哪里 题解 因为相邻才能换,所以最后一个换到前面一定是一步一步向前走,所以不存在还要向后走的情况 设最后一个为u,假设前面有一个能和u换位置的集合,那么需要将这些点尽量往后移动去接u 假设前面有一个不能和u换位置的集合S,

Codeforces Round #300——C贪心——Tourist&#39;s Notes

Description A tourist hiked along the mountain range. The hike lasted for n days, during each day the tourist noted height above the sea level. On the i-th day height was equal to some integer hi. The tourist pick smooth enough route for his hike, me

magento 开启 3D secure credit card validation

因为国外盗刷严重,于是得开启验证. 首先可以去 https://developer.cardinalcommerce.com/try-it-now.shtml.这上面有测试账号,截图如下: 这上面的信息填到 system/configuration/paymentServices/ 里面 接着去paymentMethod 下配置paypal的credit card: ok.可以去前台下个单试试,是不是最后出来这个验证页面了 上面的是测试配置.生产环境配置差不多,想要注册自己的账号,可以去 htt

Codeforces 77C 树形dp + 贪心

题目链接:点击打开链接 题意: 给定n个点, 每个点的豆子数量 下面是一棵树 再给出起点 每走到一个点,就会把那个点的豆子吃掉一颗. 问:回到起点最多能吃掉多少颗豆子 思路:树形dp 对于当前节点u,先把子节点v都走一次. 然后再往返于(u,v) 之间,直到u点没有豆子或者v点没有豆子. dp[u] 表示u点的最大值.a[u] 是u点剩下的豆子数. #include <cstdio> #include <vector> #include <algorithm> #inc

hdu 4898 LCP+贪心思维

题意:将一个字符串切成k块,使得字典序最大的那块最小. ORZ  WJMZBMR,几行题解读了一天才懂. 快速比较两个子串的大小可以利用LCP(最长公共前缀),比较公共前缀的下一个字符的大小就够了. 利用这种思想,首先我们可以预处理所有子串的LCP(后缀数组+记录 O(2nlog(2n))+O(n*n),dp(O(4*n*n))) 然后将这些子串利用LCP按照字典序排序,开始二分答案. 二分的答案就是这K个块字典序的上限.假设以i作为起点,由于字典序上限已知,所以我们可以立刻求出i点最远能选到哪

(原创)北美信用卡(Credit Card)个人使用心得与总结(个人理财版) [精华]

http://forum.chasedream.com/thread-766972-1-1.html 本人2010年 8月F1 二度来美,现在credit score 在724-728之间浮动,最高的时候也就730,属于good range, 大于746的才算excellent score.两年之内从没有信用记录到Good,觉得还算不错,现在把自己如何build credit history和一些心得与大家分享.希望对大家有帮助. 信用记录在北美的重要性自然不必多说.我的启蒙是校内/renren