莫队算法+离散化

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. CentOS 安装及配置Salt api

    安装 # yum -y install salt-api 更改配置 vim /etc/salt/master 把默认的注释掉  我们这边默认配置文件目录是/srv/salt default_inclu ...

  2. 上海赛趣-top.mainFrame.tabAddHandler方法详解

    top.mainFrame.tabAddHandler("item"+Id,'项目:'+itemname,'<%=basePath%>bizitem/goEditIte ...

  3. Object.setPrototypeOf 方法的使用

    将一个指定的对象的原型设置为另一个对象或者null(既对象的[[Prototype]]内部属性). 语法 Object.setPrototypeOf(obj, prototype) 参数 obj 将被 ...

  4. iOS 6 Passbook 入门 1/2

    http://www.raywenderlich.com/zh-hans/23066/ios-6-passbook-%E5%85%A5%E9%97%A8-12 iOS 6 Passbook 入门 1/ ...

  5. Vector2.Angle 的 bug

    获取角度 ,官方提供了 Vector2.Angle 来得值,他的值是在 0  ,180之间 原始代码是 public static float Angle(Vector3 from, Vector3 ...

  6. Hrbustoj 2266 Legendary Weights(辗转相除求最大公约数)

    题意:这个题目的意思是给出一些砝码,问我们能不能根据这些砝码称量出任意重量的物品,最大公约数并不难求,难的在于如何建立这个模型. 思路:根据数论的基础知识,两个数a,b的最大公约数是a*x + b*y ...

  7. HDU 5479 Scaena Felix

    水题,括号匹配,有几对匹配了,答案就是那个... #include<cstdio> #include<cstring> #include<cmath> #inclu ...

  8. gnome配置

    1.gome-tweak-tool    gnome调校工具 2.gnome-shell插件(在gome-tweak-tool中) 可在https://extensions.gnome.org/中下载 ...

  9. mybatis generator Date类型时间丢失

    开篇 本次项目换用了Oracle数据库,讲真,真的不好用,不太喜欢,比较喜欢轻量级的MySQL但是不得不说从Oracle的严谨中学到不少好东西. <resultMap id="Base ...

  10. Nginx反向代理配置文件

    server { listen ; server_name ; root E:/Upays/public/; index index.php index.html; log_not_found off ...