NBUT 1457 Sona
莫队算法+离散化
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的更多相关文章
- NBUT 1457 Sona(莫队算法+离散化)
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- NBUT 1457 Sona (莫队算法)
题目大意: 求一段区间内 出现的数字的次数的三次方的和 思路分析: 这要水过去的题目真是难,各种优化. 不能用map , 要离散化之后 先处理lowerbound. 优化输入. . . 时间卡的非常紧 ...
- NBUT 1457 莫队算法 离散化
Sona Time Limit:5000MS Memory Limit:65535KB 64bit IO Format: Submit Status Practice NBUT 145 ...
- bzoj 2038 小z的袜子 莫队例题
莫队,利用可以快速地通过一个问题的答案得到另一问题的答案这一特性,合理地组织问题的求解顺序,将已解决的问题帮助解决当前问题,来优化时间复杂度. 典型用法:处理静态(无修改)离线区间查询问题. 线段树也 ...
- ACM: NBUT 1107 盒子游戏 - 简单博弈
NBUT 1107 盒子游戏 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format: Practice Appoint ...
- ACM: NBUT 1105 多连块拼图 - 水题 - 模拟
NBUT 1105 多连块拼图 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format: Practice Appoint ...
- 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 ...
- NBUT 1525 Cow Xor(01字典树+前缀思想)
[1525] Cow Xor 时间限制: 2000 ms 内存限制: 65535 K 问题描述 农民约翰在喂奶牛的时候被另一个问题卡住了.他的所有N(1 <= N <= 100,000)个 ...
- 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 ...
随机推荐
- C/C++ kubetu
reference sign & use predefine in c, but const in c++
- 《JavaScript高级程序设计》读书笔记 ---变量
ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据.换句话说,每个变量仅仅是一个用于保存值的占位符而已.定义变量时要使用var 操作符(注意var 是一个关键字),后 ...
- sql 按时间二段排序
业务需用为数据按倒序排序,当天数据排在以往日期前面,但当天数据需按小时进行升序排列 select *from( select vcTitle,dtBeginDate,case when dtBegin ...
- Android开发10.2:UI组件AutoCompleteTextView(自动完成文本框)
概述 AutoCompleteTextVeiw(自动完成文本框)从 EditText派生而出 PS :EditText用法介绍 当用户输入一定字符后,自动完成自动完成文本框会显示 ...
- jquery_api(CSS)
outerWidth([options]) 获取第一个匹配元素外部宽度(默认包括补白和边框). 此方法对可见和隐藏元素均有效. outerHeight([options]) 获取第一个匹配元素外部高度 ...
- VirtualBox中CentOS通过Host-Only方式实现虚拟机主机互相访问、共享上网
VirtualBox常用的网络配置如下: 连接方式 主机访问虚拟机 虚拟机访问主机 虚拟机访问虚拟机 虚拟机访问外网 说明 网络地址转换(NAT) 不支持 支持 不支持 支持 默认连接方式,虚拟IP, ...
- Chapter 1 First Sight——11
I didn't relate well to people my age. 我没有向人们叙述清楚我的年龄 Maybe the truth was that I didn't relate well ...
- ice grid 第一篇
关键点: (1)如果想提高并发的话,还是在一个node上对于同一个application开多个server instance. 1.名词解释 .Replica groups A replica gro ...
- LDA,PCA阅读资料
1,线性判别分析(Linear Discriminant Analysis)(一) 2,机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA) 3,Machine Learning i ...
- 剑指offer 二叉搜索树与双向链表
html, body { font-size: 15px; } body { font-family: Helvetica, "Hiragino Sans GB", 微软雅黑, & ...