CSU 1515 Sequence 莫队算法

西门子触摸屏教程wincc flexible2008 sp5 Smart V3 V4中文版软件 阅读详情

题目:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1515

题意:给定一个数组,每次询问一个区间,问区间中|a[i] - a[j]| == 1的组合有多少个。

思路:莫队算法。每当增加一个元素时就往答案中加上它左右临近元素的个数,减少一个元素就在答案中减去它左右临近元素的个数,思路很简单,但本题中数据范围较大,需要离散化,但是离散化之后|a[i] - a[j]| == 1的关系将受到影响,如何在离散化保证这个关系呢?有两种方法:第一种是用另外一个数组保存初始数组,然后增删元素计算答案时,我们用它对应的初始值减1去二分寻找左边的元素,若左边元素存在,就加上或减去左边元素的个数,计算右边元素的个数同理。第二种简单一些,也不用离散化,直接用map映射,初始值作为key,元素个数作为value,这样直接保证了|a[i] - a[j]| == 1的关系,速度稍慢了一点点

#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <cmath>
#include <algorithm>
using namespace std;

typedef long long ll;
const int N = 10010;
struct node
{
    int l, r, id;
}g[N*10];
int a[N], b[N], c[N], num[N];
ll tmp, res[N*10];
int n, m, unit;
bool cmp(node a, node b)
{
    return a.l/unit != b.l/unit ? a.l/unit < b.l/unit : a.r < b.r;
}
void add(int i)
{
    num[a[i]]++;
    int j = lower_bound(b+1, b+1+n, c[i]-1) - b, k = lower_bound(b+1, b+1+n, c[i]+1) - b;
    if(c[i]-1 == b[j]) tmp += num[j];//左边临近元素存在
    if(c[i]+1 == b[k]) tmp += num[k];//右边临近元素存在
}
void del(int i)
{
    num[a[i]]--;
    int j = lower_bound(b+1, b+1+n, c[i]-1) - b, k = lower_bound(b+1, b+1+n, c[i]+1) - b;
    if(c[i]-1 == b[j]) tmp -= num[j];
    if(c[i]+1 == b[k]) tmp -= num[k];
}
void solve()
{
    unit = (int)sqrt(1.0 * n);
    memset(num, 0, sizeof num);
    sort(g+1, g+1+m, cmp);
    int l = 1, r = 0;
    tmp = 0;
    for(int i = 1; i <= m; i++)
    {
        while(r < g[i].r) add(++r);
        while(r > g[i].r) del(r--);
        while(l < g[i].l) del(l++);
        while(l > g[i].l) add(--l);
        res[g[i].id] = tmp;
    }
    for(int i = 1; i <= m; i++) printf("%lld\n", res[i]);
}
int main()
{
    while(~ scanf("%d%d", &n, &m))
    {
        for(int i = 1; i <= n; i++) scanf("%d", &a[i]), b[i] = c[i] = a[i];
        sort(b+1, b+1+n);
        for(int i = 1; i <= n; i++) a[i] = lower_bound(b+1, b+1+n, a[i]) - b;
        for(int i = 1; i <= m; i++) scanf("%d%d", &g[i].l, &g[i].r), g[i].id = i;
        solve();
    }
    return 0;
}



Qt实现离线缓存地图(附完整源码) 阅读详情

相关推荐

K230开发板实战:5步搞定YOLOv8模型部署(附常见报错解决方案)

本文提供了一份详细的K230开发板部署YOLOv8模型的实战教程。内容涵盖从环境准备、模型转换到代码编写的完整流程,并重点解析了使用AICube工具链时常见的“生成部署文件异常”等报错解决方案,旨在帮助开发者高效完成嵌入式AI模型部署。

weixin_29053073的博客 786

CSU 1515 Sequence(莫队算法)

Description 给出一个长度为n的序列ai,进行m次查询,每次查询区间[l,r]中满足|ai-aj|=1的(i,j)对数(l<=i < j<=r) Input 第一行为两整数n和m表示序列长度和查询次数,第二行n个整数ai表示该序列,最后m行每行两个整数l和r表示查询区间(1<=n<=10^4,1<=m<=10^5,0<=ai< 2^31) Output 输出每次查询的答案 Sa

ZSQ 833

ROS2实战:打造智能巡检机器人的关键技术与实现

本文详细介绍了基于ROS2和Navigation2构建智能巡检机器人的完整实战流程。通过设计主从协作的事件驱动架构,实现了机器人在已知地图中的自动导航、定点语音播报和环境图像采集功能。文章涵盖了从环境搭建、仿真配置到核心控制节点、语音服务与图像记录模块的代码实现,为开发者打造实用的自动巡检机器人提供了清晰的技术指南。

weixin_29031057的博客 225

HDU3874:Necklace

点击打开题目链接 Necklace Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1993    Accepted Submission(s): 711 Problem Description

I just want to AC you~~~ 1187

C++ bitset总结

数据结构bitset 术语:某1位置位是置1,某一位复位是某一位清零。 文章目录数据结构bitset一、3种初始化方式二、位访问三、位操作四、 位集操作总结实战练习 一、3种初始化方式 bitset<32> tmp; //默认构造函数,默认全0。 bitset<32> tmp(-1); //从整形数构造 bitset<32> tmp("101"); //从包含1和0的字符串构造 二、位访问 bitset<32> tmp(256)

qq_43807092的博客 721

避坑指南:海康MV_CC_SetIntValue接口的7个典型报错解决方案

本文深度解析海康工业相机SDK中MV_CC_SetIntValue接口的典型报错,提供7个实战解决方案。针对MV_E_CALLORDER、MV_E_PARAMETER等高频错误码,从设备状态、参数值域、依赖关系等核心约束入手,给出清晰的诊断流程与根治代码,帮助开发者构建健壮的参数设置模块,提升开发效率。

y2z3a4b5c的博客 1080

HDU 3874 Necklace 莫队算法

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3874 题意:给定一个数组,每次询问一个区间[l, r],求区间内所有数字的和,出现多次的数字只加一次 思路:莫队算法扫一遍即可,注意会爆int。我数组开小了不少RE而是TLE,蛋疼。。。 #include #include #include #include #include #inclu

弱智就要多努力 855

工业数据采集实战:用open62541库读写PLC的OPC UA节点(避坑指南)

本文详细介绍了如何使用open62541库实现工业PLC的OPC UA节点数据采集,涵盖环境搭建、节点读写优化及生产环境故障排查。通过订阅模式和多节点读写技术,显著提升数据采集效率与稳定性,适用于智能制造和工业物联网场景。

weixin_30598225的博客 400

CSU 1515: Sequence(莫队算法)

Description Give you a sequence consisted of n numbers. You are required to answer how many pairs of numbers (ai, aj) satisfy that | ai - aj | = 1 and L ≤ i Input The input consists of

ZAQ的博客 444

【OpenCV-Python】图像的载入、显示和输出(imread()、imshow()、waitKey()、namedWindow()、imwrite())

图像的载入:imread()函数 imread()函数可以用来非常便捷地读取文件中的图片到Opencv中。这个函数一般需要两个参数: (1)载入图片的路径名。如果图像文件在工程文件夹下,可以直接用文件名读取,如“cat.jpg”,否则需要输入完整的访问路径,如“D:\\test\\lena.png”。这里还有几个tips: imread函数中,一个点代表省略当前文件夹路径,两个点则代表回...

M&Q的博客 1397

基于Python实现学习进度跟踪系统

{{ task }}: {{ "%.1f"|format(hours) }}小时

寒寒豆豆软件公司的博客 196

hdu 3874 Necklace

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3874 题目大意:求区间和,但相同的数只加一次. 题目思路: 这题直接用线段树是做不出来,会退化成O(nlogn),除非线段树中不同的数只存一个,这样就变成最简单的区间求和,用树状数组也能做.但是我们需要边建树边询问,遇到树中有相同的数时,先把树中的数删档,再在当前位置添加该数,之后在判断

Go.To.AC的专栏 895

Electron - Electron failed to install correctly, please delete node_modules/electron and try install

Electron安装失败:Electron failed to install correctly, please delete node_modules/electron and try installing again,electron安装报错:Electron failed to install correctly...解决方案,Electron 未能正确安装,请删除 node_modules/electron,然后再次尝试安装,如何解决这个问题,手把手教你解决,在yarn dev时报错,electr

🏆 前端领域优质创作者 4368

莫队算法+哈希 csu1515 Sequence

这是中南第二届邀请赛的题目,当时还不懂莫队,,现在做起来感觉思路还是挺清晰的,可以用来当莫队算法的练习 首先讲下莫队算法(也是逆天),是一种分块的思路(超逆天思维) 它是一种离线算法,复杂度是O(m*sqrt(n)),m是区间范围大小,n是区间个数 适用条件:如果知道[

qwb的博客 694

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

CSU 1515 Sequence (莫队算法)

题意:给n个数,m个询问。每个询问是一个区间,求区间内差的绝对值为1的数对数。 题解:先离散化,然后莫队算法。莫队是离线算法,先按按询问左端点排序,在按右端点排序。 ps:第一次写莫队,表示挺简单的,不过这题之前乱搞一气一直TLE,莫队还是很强大的。 代码: #include <algorithm> #include <iostream> #include ...

weixin_30316097的博客 127

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

CSU 1515 Sequence

莫队算法+map #include<cstdio> #include<cstring> #include<cmath> #include<map> #include<algorithm> using namespace std; const int maxn=200000+10; int n,t,a[maxn],c...

weixin_34138056的博客 106

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

CSU 1515 - Sequence (莫队)

RT

一只冰熊 475

hdu3874(线段树点更新)

Necklace Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3000    Accepted Submission(s): 1023 Problem Description Mery has a beaut

cq_phqg 1112

HDOJ 3874 Necklace

树状数组求区间内不同元素和 离线考虑,把询问区间按右端点排序,记录每个数上一次出现的位置,如果已经出现过,把上一个删掉,当前的加进去,即只留下最近的一个元素。 Necklace Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s

码代码的猿猿 1576

HDU 3874 离线线段树

统计区间内所有数字和,对于重复出现的只统计一次 线段树的离线算法  按结束坐标排序,然后扫一遍,遇到重复的,就把之前插入线段树的给删掉 #include "stdio.h" #include "string.h" #include "algorithm" using namespace std; struct node { int l,r; __int64 sum;

872

【JZOJ 3874】 准备复赛

Description求n个节点满足以下性质的不同的树有多少种。 1、树是有标号的,每个节点被标上1到n之间的整数; 2、每个节点最多和其他3个节点相连,但是1号节点最多和其他2个节点相连(以1为根的二叉树); 3、这棵树的最大匹配(把树看成二分图后的最大匹配)数为k。 两棵树被认为不同当且仅当存在两个点u、v,在一棵树中u、v之间有边,另一棵树中u、v之间没边。 由于答案可能很大,所以小

LYD729 639

POJ 3214 Object Clustering 哈夫曼距离最小生成树

题目:http://poj.org/problem?id=3241 题意:平面中给定n个点,任意两点之间的距离为它们的哈夫曼距离,求n个点的最小生成树中的第k大边 思路:kuangbin大神的模板,看了好久。。。这个不错:点这里 #include #include #include #include #include #include using namespace std;

弱智就要多努力 1486

UVA 12345 Dynamic len(set(a[L:R])) 分块或带修改莫队

题目:https://vjudge.net/problem/UVA-12345题意:给出一个有n个元素的数组,有以下两种操作:Q x y,求出区间[x,y)内不同元素的个数,M x y,把第x个元素的值修改为y。注意题目中的下标是从0开始的思路:我写了分块和带修改莫队两种做法。首先讲分块法,对于每个位置i,我们记录前一个相同元素的坐标,记为pre[i],然后分块,块内按pre数组排序,等到查询的时候

弱智就要多努力 1479

SPOJ DQUERY D-query 莫队算法

题目:http://www.spoj.com/problems/DQUERY/en/ 题意:给定一个数组,每次询问一个区间内有多少不同的元素 思路:莫队算法裸题 #include #include #include #include #include using namespace std; const int N = 30010; struct node { int l

弱智就要多努力 1336

SPOJ COT2 Count on a tree II 树上莫队

题目:http://www.spoj.com/problems/COT2/en/ 题意:给定一棵树n个点,树上每个点都有一个权值。有m组查询,每个查询给出两个点,问这两点之间的路径上有多少种不同的权值 思路:树上莫队啊。有两种写法 #include #include #include #include #include using namespace std; typedef l

弱智就要多努力 1332

HDU 4358 Boring counting 莫队算法

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4358 题意:给定一个以1为根的树,树上每个节点都有权值,然后问以某点v为根的子树中有多少个出现次数等于k的权值 思路:首先权值要离散化,对于树结构,用dfs序转换成线性结构,即以v为根的子树线性区间为[in[v], out[v]],这样就可以用莫队算法乱搞了 #include #include

弱智就要多努力 859
上一篇: HDU 3874 Necklace 莫队算法
下一篇: CodeForces 86D Powerful array 莫队算法
霜刃未曾试
博客等级 码龄14年 72粉丝 601原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值