P1494 [国家集训队]小Z的袜子(莫队算法)
莫队板子
代码
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define int long long
using namespace std;
struct Query{
int l,r,aid;
}query[55000];
int ansa[55000],ansb[55000],c[55000],blocknum,midans,sz,belong[55000],n,m,a[55000],lx,rx;
bool cmp(Query a,Query b){
return belong[a.l]==belong[b.l]?a.r<b.r:a.l<b.l;
}
int gcd(int a,int b){
return (b==0)?a:gcd(b,a%b);
}
void move(int pos,int cs){
midans-=c[a[pos]]*(c[a[pos]]);
c[a[pos]]+=cs;
midans+=c[a[pos]]*(c[a[pos]]);
}
signed main(){
scanf("%lld %lld",&n,&m);
sz=sqrt(n);
blocknum=n/sz;
if(n%sz)
blocknum++;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
belong[i]=(i-1)/sz+1;
}
for(int i=1;i<=m;i++)
scanf("%lld %lld",&query[i].l,&query[i].r),query[i].aid=i;
sort(query+1,query+m+1,cmp);
lx=1,rx=0;
for(int i=1;i<=m;i++){
while(lx<query[i].l)
move(lx,-1),lx++;
while(lx>query[i].l)
move(lx-1,1),lx--;
while(rx<query[i].r)
move(rx+1,1),rx++;
while(rx>query[i].r)
move(rx,-1),rx--;
//move
if(query[i].l==query[i].r){
ansa[query[i].aid]=0,ansb[query[i].aid]=1;
continue;
}
ansa[query[i].aid]=midans-(query[i].r-query[i].l+1);
ansb[query[i].aid]=(query[i].r-query[i].l+1)*(query[i].r-query[i].l);
int Gcd=gcd(ansa[query[i].aid],ansb[query[i].aid]);
ansa[query[i].aid]/=Gcd;
ansb[query[i].aid]/=Gcd;
}
for(int i=1;i<=m;i++)
printf("%lld/%lld\n",ansa[i],ansb[i]);
return 0;
}
P1494 [国家集训队]小Z的袜子(莫队算法)的更多相关文章
- P1494 [国家集训队]小Z的袜子/莫队学习笔记(误
P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他 ...
- [日常摸鱼]bzoj2038[2009国家集训队]小Z的袜子-莫队算法
今天来学了下莫队-这题应该就是这个算法的出处了 一篇别人的blog:https://www.cnblogs.com/Paul-Guderian/p/6933799.html 题意:一个序列,$m$次询 ...
- BZOJ 2038 [2009国家集训队]小Z的袜子 莫队
2038: [2009国家集训队]小Z的袜子(hose) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Descriptionw ...
- BZOJ2038 [2009国家集训队]小Z的袜子 莫队+分块
作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从 ...
- P1494 [国家集训队]小Z的袜子
题目 P1494 [国家集训队]小Z的袜子 解析 在区间\([l,r]\)内, 任选两只袜子,有 \[r-l+1\choose2\] \[=\frac{(r-l+1)!}{2!(r-l-1)!}\] ...
- 【国家集训队2010】小Z的袜子[莫队算法]
[莫队算法][国家集训队2010]小Z的袜子 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程, ...
- P1494 [国家集训队]小Z的袜子(luogu)
P1494 小Z的袜子 终于了解了莫队算法(更专业的名称Square Root Decomposition of Queries) 莫队算法: 一般来说解决静态(实际上也有修改的但复杂度更高)的离线( ...
- bzoj 2308 小Z的袜子(莫队算法)
小Z的袜子 [题目链接]小Z的袜子 [题目类型]莫队算法 &题解: 莫队算法第一题吧,建议先看这个理解算法,之后在参考这个就可以写出简洁的代码 我的比第2个少了一次sort,他的跑了1600m ...
- bzoj 2038 小Z的袜子 莫队算法
题意 给你一个长度序列,有多组询问,每次询问(l,r)任选两个数相同的概率.n <= 50000,数小于等于n. 莫队算法裸题. 莫队算法:将序列分为根号n段,将询问排序,以L所在的块为第一关键 ...
- 洛谷 P1494 [国家集训队]小Z的袜子(莫队)
题目链接:https://www.luogu.com.cn/problem/P1494 一道很经典的莫队模板题,然而每道莫队题的大体轮廓都差不多. 首先莫队是一种基于分块的算法,它的显著特点就是: 能 ...
随机推荐
- sql2008升级到r2提示:检查当前是否正确配置了报表服务器、数据库服务器是否正在运行以及您是否有权访问
sql2008升级到r2提示:检查当前是否正确配置了报表服务器.数据库服务器是否正在运行以及您是否有权访问 解决方法:把服务开启ok
- html5-特殊符号的使用
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 准备mysql-connector-java
下载mysql-connector-java:https://mvnrepository.com/artifact/mysql/mysql-connector-java 导入mysql-connect ...
- MySql 存储过程 退出
mysql不支持quit, exit或return的方式退出编写存储过程时,为了业务规则需要,我们可能需要提前退出存储过程那么,我们可以利用leave label方式模拟实现quit退出的效果应用示例 ...
- 通过Hive将数据写入到ElasticSearch
我在<使用Hive读取ElasticSearch中的数据>文章中介绍了如何使用Hive读取ElasticSearch中的数据,本文将接着上文继续介绍如何使用Hive将数据写入到Elasti ...
- MQ(转)
1. 到底什么时候该使用MQ? 1). 典型场景一:数据驱动的任务依赖 采用MQ的优点是: a. 不需要预留buffer,上游任务执行完,下游任务总会在第一时间被执行 b. 依赖多个任务,被多个任务依 ...
- pyspider源码解读--调度器scheduler.py
pyspider源码解读--调度器scheduler.py scheduler.py首先从pyspider的根目录下找到/pyspider/scheduler/scheduler.py其中定义了四个类 ...
- multiple definition of qt_plugin_query_metadata
dustije 5 years ago I have a project with several plugins i want to compile into one library. I get ...
- vue路由6:导航钩子
<div id="app"> <div> <router-link to="/">首页</router-link> ...
- 图像处理基础---RGB图 灰度图 索引图 调色板
(1)二进制图 在二进制图中,像素的取值为两个离散数值0或1中的一个,0代表黑色,1代表白色 例 A=[0 0 1;1 1 0; 0 0 1];>> imshow(A,'InitialMa ...