博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4288 Coder 【线段树+离线处理+离散化】
阅读量:4843 次
发布时间:2019-06-11

本文共 1118 字,大约阅读时间需要 3 分钟。

题意略。

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

 

/*    线段树+离散化+离线处理*/#include 
#include
#include
#include
using namespace std;typedef long long ll;#define N 100010ll 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

 

 

转载于:https://www.cnblogs.com/james1207/p/3354350.html

你可能感兴趣的文章
2018上IEC计算机高级语言(C)作业 第1次作业
查看>>
hdu 1753
查看>>
return ;
查看>>
td在relative模式下,IE9不显示border
查看>>
7-内置数据结构
查看>>
version control(版本控制)
查看>>
FutureTask
查看>>
JDBC的元数据
查看>>
Intel CPU参数查询网站
查看>>
JQuery - Ajax和Tomcat跨域请求问题解决方法!
查看>>
spring跨重定向传递数据
查看>>
10693 PKKJ的生日礼物
查看>>
把Nehe 纹理教程06,用freeImage改写
查看>>
python 中is和= = 的区别
查看>>
[C/C++]关于C++11中的std::move和std::forward
查看>>
图片显示、PNG透明
查看>>
Java的sql动态参数
查看>>
centos 6.5 双网卡 上网 virtualbox nat hostonly
查看>>
11大Java开源中文分词器的使用方法和分词效果对比
查看>>
解题报告 Valentine‘s seat
查看>>