莫队算法+离散化

1.map会TLE,必须离散化做

2.long long会WA,__int64定义 %I64d输出输出能AC

3.注意输入的序列会爆int

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
#include<algorithm>
using namespace std; const int maxn = + ;
int n, m;
__int64 tmp[maxn], a[maxn], lsh[maxn];
int cnt;
int pos[maxn];
__int64 c[maxn];
__int64 ans[maxn], Ans;
int L, R;
struct X
{
int l, r, id;
}s[maxn]; bool cmp(const X&a, const X&b)
{
if (pos[a.l] == pos[b.l]) return a.r < b.r;
return a.l < b.l;
} int f(__int64 x)
{
int l = , r = cnt;
while (l <= r)
{
int mid = (l + r) / ;
if (lsh[mid] < x) l = mid + ;
else if (lsh[mid]>x) r = mid - ;
else return mid;
}
} void LSH()
{
sort(tmp + , tmp + + n);
cnt = , lsh[++cnt] = tmp[];
for (int i = ; i <= n; i++)
{
if (tmp[i] == tmp[i - ]) continue;
lsh[++cnt] = tmp[i];
}
for (int i = ; i <= n; i++) a[i] = (__int64)f(a[i]);
} int main()
{
while (~scanf("%d", &n))
{
memset(c, , sizeof c);
int sz = sqrt(1.0*n);
for (int i = ; i <= n; i++)
{
pos[i] = i / sz;
scanf("%I64d", &tmp[i]);
a[i] = tmp[i];
}
LSH(); scanf("%d", &m);
for (int i = ; i <= m; i++) {
scanf("%d%d", &s[i].l, &s[i].r);
s[i].id = i;
}
sort(s + , s + + m, cmp);
Ans = ;
for (int i = s[].l; i <= s[].r; i++)
{
Ans = Ans - c[a[i]] * c[a[i]] * c[a[i]];
c[a[i]]++;
Ans = Ans + c[a[i]] * c[a[i]] * c[a[i]];
}
ans[s[].id] = Ans; L = s[].l; R = s[].r; for (int i = ; i <= m; i++)
{
while (L < s[i].l)
{
Ans = Ans - c[a[L]] * c[a[L]] * c[a[L]];
c[a[L]]--;
Ans = Ans + c[a[L]] * c[a[L]] * c[a[L]];
L++;
}
while (L > s[i].l)
{
L--;
Ans = Ans - c[a[L]] * c[a[L]] * c[a[L]];
c[a[L]]++;
Ans = Ans + c[a[L]] * c[a[L]] * c[a[L]];
}
while (R < s[i].r)
{
R++;
Ans = Ans - c[a[R]] * c[a[R]] * c[a[R]];
c[a[R]]++;
Ans = Ans + c[a[R]] * c[a[R]] * c[a[R]];
}
while (R > s[i].r)
{
Ans = Ans - c[a[R]] * c[a[R]] * c[a[R]];
c[a[R]]--;
Ans = Ans + c[a[R]] * c[a[R]] * c[a[R]];
R--;
}
ans[s[i].id] = Ans;
} for (int i = ; i <= m; i++) printf("%I64d\n", ans[i]);
}
return ;
}

NBUT 1457 Sona的更多相关文章

  1. NBUT 1457 Sona(莫队算法+离散化)

    [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...

  2. NBUT 1457 Sona (莫队算法)

    题目大意: 求一段区间内 出现的数字的次数的三次方的和 思路分析: 这要水过去的题目真是难,各种优化. 不能用map , 要离散化之后 先处理lowerbound. 优化输入. . . 时间卡的非常紧 ...

  3. NBUT 1457 莫队算法 离散化

    Sona Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Submit Status Practice NBUT 145 ...

  4. bzoj 2038 小z的袜子 莫队例题

    莫队,利用可以快速地通过一个问题的答案得到另一问题的答案这一特性,合理地组织问题的求解顺序,将已解决的问题帮助解决当前问题,来优化时间复杂度. 典型用法:处理静态(无修改)离线区间查询问题. 线段树也 ...

  5. ACM: NBUT 1107 盒子游戏 - 简单博弈

     NBUT 1107  盒子游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:  Practice  Appoint ...

  6. ACM: NBUT 1105 多连块拼图 - 水题 - 模拟

    NBUT 1105  多连块拼图 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:  Practice  Appoint ...

  7. ACM: NBUT 1646 Internet of Lights and Switches - 二进制+map+vector

    NBUT 1646 Internet of Lights and Switches Time Limit:5000MS     Memory Limit:65535KB     64bit IO Fo ...

  8. NBUT 1525 Cow Xor(01字典树+前缀思想)

    [1525] Cow Xor 时间限制: 2000 ms 内存限制: 65535 K 问题描述 农民约翰在喂奶牛的时候被另一个问题卡住了.他的所有N(1 <= N <= 100,000)个 ...

  9. NBUT 1186 Get the Width(DFS求树的宽度,水题)

    [1186] Get the Width 时间限制: 1000 ms 内存限制: 65535 K 问题描述 It's an easy problem. I will give you a binary ...

随机推荐

  1. load

    http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages http://blog.scoutapp.com/ar ...

  2. JQuery获取input type="text"中的值的各种方式

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. redis - java 基本操作

    import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; im ...

  4. 【RMQ】 区间最值查询详解

    1. 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A ...

  5. log4j2.xml配置及例子

    1.使用log4j2需要下载包,如下: 2.配置文件可以有三种格式(文件名必须规范,否则系统无法找到配置文件): classpath下名为 log4j-test.json 或者log4j-test.j ...

  6. Android开机动画启动流程

    android开机动画启动流程   从android的Surface Flinger服务启动分析知道,开机动画是在SurfaceFlinger实例通过调用startBootAnim()启动的. 下面我 ...

  7. Learning Java 8 Syntax (Java in a Nutshell 6th)

    Java is using Unicode set Java is case sensitive Comments, C/C++ style abstract, const, final, int, ...

  8. java中iofile的路径问题,确定一个未知方法所需要的文件路径

    今天遇到一个极其烦躁的问题,一个jar包中的一个方法,要求函数中要求传入一个String类型的参数,用于指示文件所在的路径.但是对于我们来说完全不知道他需要的路径是绝对路径还是相对路径,所以我尝试了很 ...

  9. i2c的时钟延展问题(转)

    源:http://blog.csdn.net/zyboy2000/article/details/7636769 结论: (即在模拟i2c主:在主设置SCL为高后,要超时判断SCL是否为高,再发后面的 ...

  10. 一个基于jQuery的简单树形菜单

    在工作中的项目使用的是一个前端基于 jQuery easyui 的一个系统,其中左侧的主菜单使用的是 easyui 中的 tree 组件,不是太熟悉,不过感觉不是太好用. 比如 easyui 中的 t ...