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(){
  int n,d;
  int maxx=0;
  int minn=0;
  scanf("%d%d",&n,&d);
  int flag=0;
  int cnt=0;
  for (int i=1;i<=n;i++){
    scanf("%d",&a[i]);
    if (a[i]==0){
       ///代表要进行检查
       if (maxx<0){ ///如果最大值小于0 那么必须要充钱
         cnt++;
         ///充钱后,充钱的数目可能是0,那么最小值变成了0
         ///充钱后,最大钱的数目为d
         minn=0;
         maxx=d;
       }else {
         ///但是如果当前最大值是小于等于d的
         ///为了满足条件,最小值至少也是满足>=0的
         minn=max(minn,0);
       }
    }else {
       maxx+=a[i];
       minn+=a[i];
       maxx=min(maxx,d);
    }
    if (minn>d){
        flag=1;
    }
  }
    if (flag)printf("-1\n");
    else printf("%d\n",cnt);
  return 0;
}

原文地址:https://www.cnblogs.com/bluefly-hrbust/p/11493486.html

时间: 2024-07-31 01:42:57

EC round 33 D. Credit Card 贪心的相关文章

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\)时,卡内的余额不能是负数 现在问为了维持信用的平衡,最少去银行几次.(去一次,充

magento 开启 3D secure credit card validation

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

(原创)北美信用卡(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

BestCoder Round #33(zhx&#39;s submissions-手速题,注意判断00和0的情况)

zhx's submissions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1459    Accepted Submission(s): 232 问题描述 作为史上最强的刷子之一,zhx在各大oj上交了很多份代码,而且多数都AC了. 有一天,zhx想数一数他在n  个oj上一共交了多少份代码.他现在已经统计出在第i  个oj上

Educational Codeforces Round 33

Chess For Three Beautiful Divisors Rumor Credit Card Counting Arrays Subtree Minimum Query

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'

Real Time Credit Card Fraud Detection with Apache Spark and Event Streaming

https://mapr.com/blog/real-time-credit-card-fraud-detection-apache-spark-and-event-streaming/ Editor's Note: Have questions about the topics discussed in this post? Search for answers and post questions in the Converge Community. In this post we are

Codeforces Round #401 (Div. 2) E 贪心,线段树

Codeforces Round #401 (Div. 2) A 循环节 B 暴力排一下 C 标记出来,但10^5,特耿直地码了个O(n^2)的上去,最气的是在最后3分钟的时候被叉== D 从后往前贪心暴糙一下就好.比赛时一眼瞄出来了不敢写,搞不懂这样竟然不会超时.. E. Hanoi Factory 题意:n个环体,内径a[i],外径b[i],高h[i].当 a[i+1]<b[i]<=b[i+1] 时,第 i 个环体可以堆在第 i+1个环体上.求可以堆出的最高高度. tags:佩服那些大佬,

Codeforces Round #480 (Div. 2) C 贪心 D 数字、思维 E 树上倍增

Codeforces Round #480 (Div. 2) C. Posterized 题意: 给出 n 个数,都是区间 [0,255] 内的数,要你把 [0,255] 划分成多个长度 <=k 的不重叠的子区间.每个数必须包含在一个子区间内,且这个数的价值是这个子区间的左端点.要你输出这 n 数的价值,且这 n 个价值字典序要最小. tags: 首先很明显字典序最小,那对于第 i 个数 p[i] 定它的区间时,左端点肯定要尽可能小.所以我们直接枚举区间 [ p[i]-k+1, p[i] ] 定