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 = 100000 + 10; 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 = 1, r = cnt;while (l <= r){int mid = (l + r) / 2;if (lsh[mid] < x) l = mid + 1;else if (lsh[mid]>x) r = mid - 1;else return mid;} }void LSH() {sort(tmp + 1, tmp + 1 + n);cnt = 0, lsh[++cnt] = tmp[1];for (int i = 2; i <= n; i++){if (tmp[i] == tmp[i - 1]) continue;lsh[++cnt] = tmp[i];}for (int i = 1; i <= n; i++) a[i] = (__int64)f(a[i]); }int main() {while (~scanf("%d", &n)) {memset(c, 0, sizeof c);int sz = sqrt(1.0*n);for (int i = 1; i <= n; i++){pos[i] = i / sz;scanf("%I64d", &tmp[i]);a[i] = tmp[i];}LSH();scanf("%d", &m);for (int i = 1; i <= m; i++) {scanf("%d%d", &s[i].l, &s[i].r);s[i].id = i;}sort(s + 1, s + 1 + m, cmp);Ans = 0;for (int i = s[1].l; i <= s[1].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[1].id] = Ans; L = s[1].l; R = s[1].r;for (int i = 2; 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 = 1; i <= m; i++) printf("%I64d\n", ans[i]);}return 0; }
转载于:https://www.cnblogs.com/zufezzt/p/5413902.html
NBUT 1457 Sona相关推荐
- NBUT - 1457 Sona 莫队
NBUT - 1457 Sona 题意: 计算一个区间内每种数出现次数的立方和,那么转移的话,假设一个区间是[L,R],如果向左转移,用ans保存区间的答案,cnt[i]记录第 i 种数出现的次数,那 ...
- NBUT 1457 Sona(莫队算法+离散化)
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- NBUT 1457 Sona (莫队算法)
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- NBUT 1457 Sona 莫队算法 分块处理
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- NBUT - 1457 Sona (莫队)
题链:https://vjudge.net/problem/NBUT-1457/origin 题意:求区间内,每个数出现次数x的立方和. 思路:模板题.添加时,由k^3->(k+1)^3,多了3 ...
- NBUT - 1457 Sona
题目:给你n个数字,m个区间询问,问你区间内每个数出现的次数的立方和 思路:直接莫队搞就好了.输出用%lld会WA,要用%I64d才能A 代码: #pragma comment(linker, &qu ...
- NBUT - 1457 Sona (莫队算法)
点我看题 题意:求某段区间内数字出现次数的立方和. 分析:莫队的模板题,不得不说这题神坑,vj说好的操作系统为Linux呢???结果%I64d才能过== 当然这题不用输入挂其实也能过- #includ ...
- (NBUT - 1457)Sona(莫队+离散化)
题目链接:Sona - NBUT 1457 - Virtual Judge (ppsucxtt.cn) 题意比较简单:有N个数,有M个询问,求每次询问的区间[L,R]中,每种数字出现次数的立方和. 在 ...
- Sona - NBUT 1457 莫队算法
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
最新文章
- C++ 中 string earse 函数的使用
- 不能将参数 2 从“const char *”转换为“LPCWSTR”【转】http://blog.sina.com.cn/s/blog_4a94a0db0100ktxp.html...
- boost::graph模块实现DFS parenthesis的测试程序
- muduo网络库学习(三)定时器TimerQueue的设计
- seqlist插入java_大话数据结构(五)(java程序)——顺序存储结构的插入与删除...
- [css] style标签写在body前和body后的区别是什么?
- Linux项目日报,1Password推出Linux版本 现已进入公开预览阶段
- 树莓派教程 - 1.1 树莓派GPIO库wiringPi 硬件PWM可调频率
- getchar()细节
- C#:SQLite大量插入的效率问题
- 常用计算机检索算符,在计算机检索中,常用的布尔逻辑算符有哪几种
- 计算机启动修复取消,w7电脑启动修复无法进入操作系统怎么解决 w7系统取消启动修复的方法...
- [Obsidian]懒人必备插件附使用教程
- parameterMap与parameterClass
- 数字定时误差检测算法系列之 ———时域Gardner算法
- 题目4:常微分方程初值问题
- regsvr32命令详解
- jQuery实现商品楼层的感觉
- 当你老了,一生最后悔什么?
- 基于机器学习与人工智能的数据(数据库+大数据)技术
热门文章
- GEE11:2个土地覆盖数据(LUCC)分享和下载
- python实现摇号小程序
- 数美科技CEO唐会军获聘中国演出行业协会第二届内容评议委员会专家
- C++的4种编程范型 programming paradigms
- 【数据分析与挖掘】财政收入影响因素分析及预测模型(有数据集和代码)
- 以下说法正确的是。(选择2项)
- CAS:1222468-90-7,p-SCN-Bn-Deferoxamine的分子量为752.9
- 哪些专科学校计算机师资好,计算机专科学校排名前十(最出名的10所计算机学院)...
- vos3000打电话没声音 排除法解决问题
- canvas绘制刮刮卡