当前位置: 首页 > news >正文

HDU 4288 Coder 【线段树+离线处理+离散化】

题意略。

离线处理,离散化。然后就是简单的线段树了。需要根据mod 5的值来维护。具体看代码了。

/*
    线段树+离散化+离线处理
*/

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
#define N 100010
ll sum[N<<2][5];
int a[N], n, m, cnt[N<<2];

struct node {
    char c;
    int x;
} q[N];
void Up(int rt) {
    cnt[rt] = cnt[rt<<1] + cnt[rt<<1|1];
    for (int i=0; i<5; i++)
        sum[rt][i] = sum[rt<<1][i] + sum[rt<<1|1][(i-cnt[rt<<1]%5+5)%5];
}
void add(int idx, int val, int l, int r, int rt) {
    if (l == r) {
        cnt[rt] = 1;
        sum[rt][1] = val;
        return ;
    }
    int mid = (l + r) >> 1;
    if (idx <= mid) add(idx, val, l, mid, rt<<1);
    else add(idx, val, mid+1, r, rt<<1|1);
    Up(rt);
}
void del(int idx, int l, int r, int rt) {
    if (l == r) {
        sum[rt][1] = cnt[rt] = 0;
        return ;
    }
    int mid = (l + r) >> 1;
    if (idx <= mid) del(idx, l, mid, rt<<1);
    else del(idx, mid+1, r, rt<<1|1);
    Up(rt);
}
int main() {

    char s[10];
    while (scanf("%d", &n) == 1) {
        m = 0;
        for (int i=0; i<n; i++) {
            scanf(" %s", s);
            q[i].c = s[0];
            if (s[0] != 's') {
                scanf("%d", &q[i].x);
                a[m++] = q[i].x;
            }
        }
        sort(a, a+m);
        m = unique(a, a+m) - a;
        memset(cnt, 0, sizeof(cnt));
        memset(sum, 0, sizeof(sum));
        int pos;
        for (int i=0; i<n; i++) {
            if (q[i].c == 's') printf("%I64d\n", sum[1][3]);
            else {
                pos = lower_bound(a, a+m, q[i].x) - a + 1;
                if (q[i].c == 'a') add(pos, q[i].x, 1, m, 1);
                else del(pos, 1, m, 1);
            }
        }
    }


    return 0;
}


相关文章:

  • 近期刷题的c语言总结。
  • 程序员看婚姻
  • Python 入门教程 18 ---- File Input/Output
  • 【职业】致迷茫的大学生们
  • (poj1.3.2)1791(构造法模拟)
  • 微软云技术Windows Azure专题(五):如何将WCF服务部署在Windows Azure上
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来
  • 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中
  • 『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势
  • Linux系统中的文件目录介绍——Linux system files in the directory structure is introduced
  • 『开源』字符串匹配引擎
  • java 新 IO 的运用
  • 『开源』源码在线阅读工具
  • 收藏网友的 源程序下载网
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • HTTP那些事
  • JavaScript设计模式与开发实践系列之策略模式
  • js写一个简单的选项卡
  • Making An Indicator With Pure CSS
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • scrapy学习之路4(itemloder的使用)
  • Theano - 导数
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 不上全站https的网站你们就等着被恶心死吧
  • 从tcpdump抓包看TCP/IP协议
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于axios的vue插件,让http请求更简单
  • 京东美团研发面经
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 我从编程教室毕业
  • 由插件封装引出的一丢丢思考
  • 责任链模式的两种实现
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (007)XHTML文档之标题——h1~h6
  • (2)(2.10) LTM telemetry
  • (8)STL算法之替换
  • (NSDate) 时间 (time )比较
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (三)c52学习之旅-点亮LED灯
  • (十) 初识 Docker file
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net framework4与其client profile版本的区别
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 使用 SpanT 为字符串处理提升性能