普通莫队

news/2025/2/8 19:58:47/文章来源:https://www.cnblogs.com/stawalr/p/18705294

普通莫队🤔

莫队:对于只有询问没有修改的问题,先将询问存储下来,对其进行排序,每次从上一询问区间暴力转移到下一询问区间。

复杂度:如果是\(O(1)\)转移,则该算法总复杂度为\(O(n\sqrt n)\)

排序方法:以\(l\)所在块编号为第一关键字,\(r\)为第二关键字排序。

例题:P1494.小Z的袜子

// Problem: P1494 [国家集训队] 小 Z 的袜子
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1494
// Memory Limit: 128 MB
// Time Limit: 200000 ms
// 
// Powered by CP Editor (https://cpeditor.org)
#include<cstdio>
#include<math.h>
#include<algorithm>
#define int long long
using namespace std;
const int mn=50005;
int n,m,c[mn],sz;//sz是块长
int ll[mn],rr[mn],ans[mn];//开三个额外数组记录编号为i的询问对应区间、可行方案总数
int l,r,sum,s[mn];//当前左端点,右端点,可行方案总数,s[i]表示区间内含s[i]个种类为i的袜子
struct node
{int l,r,id;//左端点、右端点、问题编号
}q[mn];
bool cmp1(node x,node y)
{if((x.l-1)/sz==(y.l-1)/sz)return x.r<y.r;//以左端点所在块为第一关键字return x.l<y.l;
}
int gcd(int x,int y)
{if(y==0)return x;return gcd(y,x%y);
}
void add(int x)
{sum-=s[c[x]]*(s[c[x]]-1)/2;s[c[x]]++;sum+=s[c[x]]*(s[c[x]]-1)/2;
}
void del(int x)
{sum-=s[c[x]]*(s[c[x]]-1)/2;s[c[x]]--;sum+=s[c[x]]*(s[c[x]]-1)/2;
}
signed main()
{scanf("%lld%lld",&n,&m);sz=sqrt(n);for(int i=1;i<=n;i++){scanf("%lld",&c[i]);}for(int i=1;i<=m;i++){scanf("%lld%lld",&q[i].l,&q[i].r);q[i].id=i;ll[i]=q[i].l;//预处理,防止后面再排一次序rr[i]=q[i].r;}sort(q+1,q+m+1,cmp1);l=1;for(int i=1;i<=m;i++){// printf("%d\n",sum);while(l<q[i].l)del(l++);while(l>q[i].l)add(--l);while(r<q[i].r)add(++r);while(r>q[i].r)del(r--);//add和del操作ans[q[i].id]=sum;}for(int i=1;i<=m;i++){if(ll[i]==rr[i]){printf("0/1\n");//特判l=r情况continue;}l=(rr[i]-ll[i]+1)*(rr[i]-ll[i])/2;r=gcd(ans[i],l);printf("%lld/%lld\n",ans[i]/r,l/r);//化成最简分数形式}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880949.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1分钟学会DeepSeek本地部署,小白也能搞定!

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型,具备数学推理、代码生成等深度能力,堪称"AI界的六边形战士"。 DeepSeek 身上的标签有很多,其中最具代表性的标签有以下两个:低成本(不挑硬件、开源) 高性能(推理能力极强、回答准确)一、为什么要…

内存占用与监控方式介绍

1.内存占用 神经网络模型常见的内存占用可以分为以下几个部分: 1.1 模型参数内存定义:神经网络的权重和偏置等参数会占用内存。 计算方法:参数总量 = 各层参数数量的总和。 每个参数的大小取决于数据类型(如 float32 为 4 字节,float16 为 2 字节,int8 为 1 字节)。公式…

WebGPU 版 Kokoro:浏览器端零成本使用高质量 TTS;苹果 ELEGNT 台灯机器人:赋予非人形机器人「情感」

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

尝试使用阿里云计算巢部署 DeepSeek-R1

记录一下用阿里云计算巢部署 DeepSeek-R1 的经过。进入阿里云计算巢控制台的服务目录,选择 DeepSeek 社区版,点击「开始部署」,选择最便宜的 ECS 实例 GRID 虚拟化4核30G,费用是 1.748/小时。点击「立即创建」,然后控制台会显示正在部署的状态。部署完成后,控制台会显示公…

未来已来:云手机+AI如何重塑Facebook、Google的智能营销生态

未来已来:云手机+AI如何重塑Facebook、Google的智能营销生态 在数字化浪潮奔涌的当下,科技融合正以令人惊叹的速度重塑各个行业,智能营销领域更是首当其冲。云手机与AI自动化工具的深度融合,为Facebook、Google构建的庞大智能营销生态带来了颠覆性的变革,开拓出全新的发展…

Burp Suite 2024激活汉化

转载自https://blog.csdn.net/m0_52985087/article/details/140299827 前言在项目即将上线阶段,迈入生产环境之际,确保其安全性成为我们不可忽视的首要任务。为筑起一道坚不可摧的安全防线,我们借助业界公认的网络安全利器——Burp Suite,我们将展开一场全面的安全测试,旨…

清华权威出品!104页《DeepSeek从入门到精通》免费领,解锁AI时代的核心竞争力!

引言: 在AI技术席卷全球的今天,如何高效驾驭大模型工具已成为个人与企业脱颖而出的关键。清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室余梦珑博士后团队倾力打造的《DeepSeek从入门到精通》电子书重磅发布!全书104页,从基础操作到高阶技巧,手把手教你玩转国产顶…

win11家庭中文版登录应用提示:“为了对电脑进行保护,已经阻止此应用”

1.家庭中文版组策略里面禁用:以管理员批准模式运行所有管理员 win11打不开组策略,需要复制文本内容到记事本,修改为bat后缀执行 @echo off pushd "%~dp0" dir /b c:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum …

4种比常见的线程池和线程同步买票问题

线程池 所谓的线程池:其实就是线程对象的容器。 可以根据需要,在启动时,创建1个或者多个线程对象。 java中有4种比较常见的线程池。 1.固定数量的线程对象。 2.根据需求动态创建线程:动态创建线程:根据需求来创建线程的个数,会自动给我们分配合适的线程个数来完成任务。 3.…

12. Makefile文件

一、什么是Makefile文件Makefile 文件时一种用于管理和自动化软件编译过程的文本文件。它通常包含了一系列规则,这些规则描述了如何根据源代码文件生成可执行文件或者其它目标文件。Makefile 的核心概念是规则和依赖关系,规则定义了如何生成一个或多个目标文件,而依赖关系则…

busybox 设置登录用户名及密码

1、配置 busybox2、替换新的 /bin/busybox,建立 /bin/login、/sbin/getty 软链接ln -sf /bin/busybox ./bin/login ln -sf /bin/busybox ./sbin/getty3、设置 /etc/inittab 不需要登录:ttyS0::respawn:/bin/ash -l -i需要登录:ttyS0::respawn:/sbin/getty 115200 ttyS04、设…