题目链接:http://codeforces.com/problemset/problem/284/C

题目意思:给出3种操作:t = 1:在前 a 个数中每个数都加上x; t= 2:在数组末尾增加一个数k,数组长度相应增加1; t = 3:删除数组最后一个数,数组长度减少1。对于n次操作,都给出整个数组所有元素的平均值。

一开始看见题目意思那么容易懂,于是以为很容易做,错足14次,15次终于成功了。先是TLE(对操作2直接暴力循环加),后在Test 10 wa wa wa~~~,说误差超了,全部不知道是什么回事!

其实3个操作不需要都模拟出来,操作3是比较麻烦的,因为删除的数有可能经过 t = 1有所变化。所以很自然地想到要追踪当前要删除的数经过t = 1 时的改变,这样就需要开多一个数组来记录这些位置。

代码中标上“关键”那里是很重要的,代表要清除操作1对数组中最后一个数的处理,否则新的一轮操作1会累加这种操作,这样结果就不正确了。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int maxn = *1e5 + ;
int a[maxn], mark[maxn]; int main()
{
int n, i, t, x, l, len;
while (scanf("%d", &n) != EOF)
{
memset(mark, , sizeof(mark));
a[len=] = ;
double sum = ;
while (n--)
{
scanf("%d", &t);
if (t == )
{
scanf("%d%d", &l, &x);
sum += (double) l * x;
mark[l] += x;
}
else if (t == )
{
scanf("%d", &x);
sum += x;
a[++len] = x;
}
else
{
if (len >= )
{
sum -= a[len]; //减最后一个数
sum -= mark[len]; //减最后一个数经过操作1时可能的变化
mark[len-] += mark[len];
mark[len] = ; // 这个是关键啊
len--;
}
}
printf("%.7lf\n", (double)sum/len);
}
}
return ;
}

ps:学完树状数组后会补上运用树状数组解决的方法

codeforces C. Cows and Sequence 解题报告的更多相关文章

  1. Codeforces Educational Round 92 赛后解题报告(A-G)

    Codeforces Educational Round 92 赛后解题报告 惨 huayucaiji 惨 A. LCM Problem 赛前:A题嘛,总归简单的咯 赛后:A题这种**题居然想了20m ...

  2. codeforces 476C.Dreamoon and Sums 解题报告

    题目链接:http://codeforces.com/problemset/problem/476/C 题目意思:给出两个数:a 和 b,要求算出 (x/b) / (x%b) == k,其中 k 的取 ...

  3. Codeforces Round #382 (Div. 2) 解题报告

    CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...

  4. USACO Section2.1 Sorting a Three-Valued Sequence 解题报告

    sort3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  5. CodeForces - 284C - Cows and Sequence

    先上题目: C. Cows and Sequence time limit per test 3 seconds memory limit per test 256 megabytes input s ...

  6. codeforces C. Vasily the Bear and Sequence 解题报告

    题目链接:http://codeforces.com/problemset/problem/336/C 题目意思:给出一个递增的正整数序列 a1, a2, ..., an,要求从中选出一堆数b1, b ...

  7. timus 1175. Strange Sequence 解题报告

    1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...

  8. codeforces 507B. Amr and Pins 解题报告

    题目链接:http://codeforces.com/problemset/problem/507/B 题目意思:给出圆的半径,以及圆心坐标和最终圆心要到达的坐标位置.问最少步数是多少.移动见下图.( ...

  9. codeforces 500B.New Year Permutation 解题报告

    题目链接:http://codeforces.com/problemset/problem/500/B 题目意思:给出一个含有 n 个数的排列:p1, p2, ..., pn-1, pn.紧接着是一个 ...

随机推荐

  1. link2005 重复定义错误

    造成LNK2005错误主要有以下几种情况:  1.重复定义全局变量. 对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下.其实这是错误的,全局变量是针对整个工程的. 正 ...

  2. copy to tmp table

    +-----+--------+-----------+--------------+---------+------+----------------------+---------+ | Id   ...

  3. PS 基础知识 .atn文件如何使用

    ANT文件就是Frames.atn类动作文件 具体安装步骤如下 : (以CS4 为例) 启动Photoshop 点击"窗口" 选"动作" 在弹出的动作面板里,点 ...

  4. iOS_7_scrollView大图缩放

    终于效果图: BeyondViewController.h // // BeyondViewController.h // 7_scrollView大图展示 // // Created by beyo ...

  5. Jenkins系列之-—08 实现SQL脚本批量执行

    公司内部推广DevOps,所有目前在维护阶段和开发阶段项目全部配置上了自动发布.采用Jenkins+SVN+ANT,之后批量执行SQL语句的实现提上日程 一.环境 Linux环境 安装ANT工具,且下 ...

  6. 前端-DDoS攻击

    下面的脚本(略有修改)就会向受害网站发送大量的请求: function imgflood() { var TARGET = 'example.com' var URI = '/index.php?' ...

  7. python--网络编程--socket

    网络通信标准---网络协议 互联网协议--osi七层协议 五层协议:应用层:应用层.表示层.会话层          传输层:传输层    网络层:网络层    数据链路层:数据链路层    物理层: ...

  8. 使用mark-sweep算法的垃圾回收器

    在我写C++代码的那些时间里,我没有写过垃圾回收器,也没有实现过自己的内存分配器,这方面的文章倒是看了不 少.比如我在写C#代码时只管new而不需要释放,我也明白有个垃圾回收器在那帮我回收那些堆上的对 ...

  9. angular 复选框checkBox多选的应用

    应用场景是这样的,后台返回的数据在页面上复选框的形式repeat出来 可能会有两种需求: 第一:后台返回的只有项,而没有默认选中状态(全是待选状态) 这种情况相对简单只要repeat出相应选项 第二: ...

  10. mysql 较为高效的分页

    直接上代码 DaoImpl: /** * 开发转让页面展示 ,查询搜索数据,而且分页展示 * @param zrdp 搜索条件封装对象 * @return */ @SuppressWarnings(& ...