CF 86D
题目链接:
http://codeforces.com/problemset/problem/86/D
题意:
一个数列,问[L,R]区间内(每个数字的个数的平方*数字的大小)的和。
思路:
莫队模板。
不过更新的时候卡常数闹哪样……从网上抄了一个,好像移位运算比单纯乘法快很多的样子,也mark一下好了
源码:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
#define LL long long
const int MAXN = 200000 + 5;
int blocksize;
int pos[MAXN];
struct Q
{int l, r;int id;
}q[MAXN];
bool cmp(Q a, Q b)
{if(pos[a.l] == pos[b.l]) return a.r < b.r;return a.l < b.l;
}
int data[MAXN];
LL num[MAXN * 5];
LL res[MAXN];
int n, m;
void update(int u, int v, LL &ans)
{if(v == 1){ans += ((num[u] << 1) + 1) * u; ///网上抄的num[u]++;}else{num[u]--;ans -= ((num[u] << 1) + 1) * u;}
}
int main()
{while(scanf("%d%d", &n, &m) != EOF){blocksize = sqrt(1.0 * n);for(int i = 1 ; i <= n ; i++){scanf("%d", &data[i]);pos[i] = (i - 1) / blocksize;}for(int i = 0 ; i < m ; i++){scanf("%d%d", &q[i].l, &q[i].r);q[i].id = i;}sort(q, q + m, cmp);int curr = 0, curl = 1;LL cnt = 0;memset(num, 0, sizeof(num));for(int i = 0 ; i < m ; i++){if(q[i].l == q[i].r){res[q[i].id] = data[q[i].l];continue;}for(int j = curr + 1 ; j <= q[i].r ; j++) update(data[j], 1, cnt);for(int j = curr ; j > q[i].r ; j--) update(data[j], -1, cnt);for(int j = curl ; j < q[i].l ; j++) update(data[j], -1, cnt);for(int j = curl - 1; j >= q[i].l ; j--) update(data[j], 1, cnt);curr = q[i].r;curl = q[i].l;res[q[i].id] = cnt;
//            printf("i = %d, l = %d, r = %d, ans = %I64d\n", i, q[i].l, q[i].r, cnt);}for(int i = 0 ; i < m ; i++) printf("%I64d\n", res[i]);}return 0;
}

CF 86D 莫队(卡常数)相关推荐

  1. CF 617E 莫队

    CF 617E 题目链接: http://codeforces.com/problemset/problem/617/E 题意: 问[L,R]区间内,有多少个子区间,它们里元素的异或和为k. 思路: ...

  2. 分治 —— 莫队算法

    [概述] 莫队算法(mo's algorithm)是用来解决离线区间不修改询问问题,可以将复杂度优化到 O(n^1.5),除去普通的莫队算法外,还有带修改的莫队.树上莫队等等. 莫队常用于维护区间答案 ...

  3. 【打CF,学算法——四星级】CodeForces 86D Powerful array (莫队算法)

    [CF简介] 题目链接:CF 86D 题面: D. Powerful array time limit per test 5 seconds memory limit per test 256 meg ...

  4. 洛谷P5071 [YNOI2015]此时此刻的光辉 莫队+玄学优化+卡常QWQ

    题目链接:传送门 在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此 ...

  5. 洛谷P5072 [YNOI2015]盼君勿忘 莫队+unordered_set+毒瘤卡常

    在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此刻的光辉,盼君勿忘 ...

  6. 莫队 ---- CF 135D. Jeff and Removing Periods (等差数列预处理 + 莫队)

    题目 题目大意: 给你一个等差序列,每次查询一段区间[l,r][l,r][l,r]的答案. 显然这是典型的不带修改的区间询问类问题,我们可以考虑用莫队算法去解决. 解题思路: 接下来看怎么递推[l,r ...

  7. cf D. Powerful array 莫队算法

    D. Powerful array 题意:给定一个序列>>每次查询一个区间>>查询该区间内 出现过的数字*出现的次数的平方 的和 思路:学习莫队的第一题或者说小z的袜子是第一题 ...

  8. CodeForces - 86D Powerful array(莫队)

    题目链接:点击查看 题目大意:给出一个由n个数字组成的数列,再给出m次查询,每次查询要求输出[l,r]中的答案,这个题目的答案为: 假设x为区间[l,r]内的数,出现的次数记为cnt[x],则数x的贡 ...

  9. Powerful array CodeForces - 86D (莫队算法)

    An array of positive integers a1, a2, ..., an is given. Let us consider its arbitrary subarray al, a ...

  10. 牛客练习赛85 数学家的迷题 (带修莫队/线段树)

    题意: 1:将a[id]a[id]a[id]的值改为xxx. 2:令t=a[l]×a[l+1]×...×a[r−1]×a[r]t=a[l]×a[l+1]×...×a[r−1]×a[r]t=a[l]×a ...

最新文章

  1. 如何选择分布式事务解决方案?
  2. javascript:with的用法以及延长作用域链
  3. popoverController(iPad)
  4. Button 的 clilck 事件
  5. Leetcode算法题(C语言)12--旋转图像
  6. 为什么Python没有属性赋值的“with”语句?
  7. python项目实战:实现数据可视化三维拟合
  8. 挖掘11亿用户背后的产品逻辑之美
  9. spark中local模式与cluster模式使用场景_详细总结spark基于standalone、yarn集群提交作业流程...
  10. c语言运算程序示例,C语言算术运算示例程序
  11. 蓝领ERP:谁在坚守,谁在逃跑(转)
  12. 微信小程序—智能停车
  13. electron 读取文件夹内容_读写本地文件
  14. HLG 1506 屠夫和狙击手【判断点在线段上+线段与圆相交】
  15. asm MGMT库迁移
  16. 计算机毕业设计ssm小区宠物管理系统k8n96系统+程序+源码+lw+远程部署
  17. Xmanager中的Xbrowser怎么使用?
  18. webview的一些使用小窍门和需注意的地方
  19. native react 图片多选_N-第三方-react-native-image-picker,选择图片上传
  20. 输入一个QQ邮箱或者网易邮箱,判断其格式是否正确 要求:长度不能超过15,@前面不能用字母 正确格式2156636@qq.com

热门文章

  1. Java io流文件读取和写入
  2. 背景图片轮播html代码,一款常见的背景图片轮播动效
  3. 锐捷服务器虚拟化技术_2019云计算分类排行发布 星网锐捷勇夺两项榜首
  4. mybatisplus自动生成id_【mybatis-plus】主键id生成、字段自动填充
  5. 机器人应用(Skill)精选丨让HEXA机器人成为直播网红,还可以接收红外信号
  6. 【业余无线电】-海兴通SZ-666D信道编程
  7. VBA按行读取TXT文本文件
  8. WPS-设置列的下拉菜单
  9. 51单片机前言知识总结
  10. 电脑扩展屏 HDMI转VGA