月赛\(\text{Div2T1}\),窝唯一一道\(\text{AC}\)的题(我太菜啦!)


\(\text{solution:}\)

根据题面,显然三个操作对应三种情况,我们发现每次这三种操作均不涉及前面的数,所以考虑边读边做(暂时不用考虑操作三,它是此题中唯一一个难点,待会再说)

该数据范围在\(\text{int}\)范围内。使用变量\(\text{money}\)记录当前的压岁钱的多少,\(\text{ans}\)记录钱不够花的事件数。至此,我们已经可以完美解决前两个操作。核心代码如下。

for(int i=1;i<=m;i++){
money+=f[i];
cin>>t;
if(t==1){
cin>>a;
money+=a;
}
else if(t==2){
cin>>a;
if(money<a)ans++;
else money-=a;
}
}

接下来单独考虑操作三。一种显而易见的思路:用一个数组,每当进行操作三时,该数组下标为 \(b\) 的地方值加上 \(a\) ,注意!是加上 \(a\) 而不是赋值为 \(a\) ,因为注意到数据有可能出现多个 \(a\) 封印在同一事件的情况。同时,在每次循环时最前面让\(\text{ans}\)加上此数组下标为 \(i\) 的值。当没有压岁钱封印在事件 \(i\) 时加上的是0,反之,加上的则是那个数组下标为 \(i\) ,即,在 \(i\) 事件解封的压岁钱数。

至此,思路整理完毕。完整(\(\text{AC}\))代码:

#include <iostream>
#include <cstdio> using namespace std; unsigned long long m,t,a,b,money,ans,f[10000001]; int main(){
cin>>m;
for(int i=1;i<=m;i++){
money+=f[i];
cin>>t;
if(t==1){
cin>>a;
money+=a;
}
else if(t==2){
cin>>a;
if(money<a)ans++;
else money-=a;
}
else if(t==3){
cin>>a>>b;
money-=a;
f[b]+=a; //有可能多个压岁钱封印在同一时刻
}
}
cout<<ans<<endl;
return 0;
}

题解 P6013 【压岁钱】的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 网络中的 TCP/IP

    TCP/IP OSI的“实现”:TCP/IP OSI七层模型 TCP/IP概念层模型 功能 TCP/IP协议族 应用层 应用层 文件传输.电子邮件.文件服务.虚拟终端 FTP,HTTP,SMTP,SN ...

  2. vue keep-alive 遇见 vue-router

    keep-alive 遇见 vue-router ·keep-alive 是Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染 ·routre-view也是一个组件,如果直接被包在kee ...

  3. HTML文档快捷键

    一.web浏览器 1.刷新网页   F5 二.VS Code 常用快捷键 1.快速生成HTML代码 首先,建立一个空文档,选择编程语言为HTML: 其次,按下!(英文状态下),再按下tab键,就可以了 ...

  4. ECMAScript基本对象——function定义函数

    function:函数对象=java方法,java的方法或者函数是,java对象的一部分. JavaScript的函数或者方法,就是一个对象实参:都必须具有确定的值, 以便把这些值传送给形参. 形参: ...

  5. Laravel中使用QRcode自制二维码

    一.配置 1.在项目根目录输入命令 composer require simplesoftwareio/simple-qrcode 1.3.* 2.在config/app.php 的 provider ...

  6. mysql 连接权限

    命令解释: . 第一个表示库,第二个表示表; .对全部数据库的全部表授权,so.ok 表示只对so这个库中的ok表授权 root 表示要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的 '% ...

  7. Networking POJ - 1287 最小生成树板子题

    #include<iostream> #include<algorithm> using namespace std; const int N=1e5; struct edge ...

  8. 二维数组填充datagridview

    public void TwoDArrayShowINDatagridview(string[,] arr) { DataTable dt = new DataTable(); for (int co ...

  9. c++ 踩坑大法好 复合数据类型------vector

    1,vector是啥? 是具有动态大小的数组,具有顺序.能够存放各种类型的对象.相比于固定长度的数组,运行效率稍微低一些,不过很方便. 2,咋用? 声明: vector <int> vi; ...

  10. SpringBoot框架---配置

    1.更改tomcat的端口号: application.properties 配置文件中, server.port=9090 2.设置上下文路径: server.servlet.context-pat ...