bzoj 2308 小Z的袜子(莫队算法)
小Z的袜子
【题目链接】小Z的袜子
【题目类型】莫队算法
&题解:
莫队算法第一题吧,建议先看这个理解算法,之后在参考这个就可以写出简洁的代码
我的比第2个少了一次sort,他的跑了1600ms,我的跑了800ms.
【时间复杂度】\(O(n^{1.5})\)
&代码:
#include <cstdio>
#include <bitset>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
const int maxn = 5e4 + 7;
int n, m, col[maxn], pos[maxn], ans, num[maxn];
ll fz[maxn], fm[maxn];
struct data { int l, r, id; } a[maxn];
bool cmp(data a, data b) {
if(pos[a.l] == pos[b.l]) return a.r < b.r;
return a.l < b.l;
}
void update(int x, int d) {
int c = col[x];
ans -= num[c] * num[c];
num[c] += d;
ans += num[c] * num[c];
}
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
int main() {
//("E:1.in", "r", stdin);
while(~scanf("%d%d", &n, &m)) {
int bk = sqrt(n);
for(int i = 1; i <= n; i++) {
scanf("%d", col + i);
pos[i] = (i - 1) / bk;
}
for(int i = 1; i <= m; i++) {
scanf("%d%d", &a[i].l, &a[i].r);
a[i].id = i;
}
sort(a + 1, a + 1 + m, cmp);
memset(num, 0, sizeof(num));
ans = 0;
for(int i = 1, l = 1, r = 0; i <= m; i++) {
for(; r < a[i].r; r++)
update(r + 1, 1);
for(; r > a[i].r; r--)
update(r, -1);
for(; l < a[i].l; l++)
update(l, -1);
for(; l > a[i].l; l--)
update(l - 1, 1);
if(a[i].l == a[i].r) {
fz[a[i].id] = 0, fm[a[i].id] = 1;
continue;
}
//引用& 是跟着变量的,不是跟着类型的
ll &tz = fz[a[i].id], &tm = fm[a[i].id];
tz = ans - (a[i].r - a[i].l + 1);
tm = (ll)(a[i].r - a[i].l + 1) * (a[i].r - a[i].l);
ll k = gcd(tz, tm);
tz /= k, tm /= k;
}
for(int i = 1; i <= m; i++) {
printf("%lld/%lld\n", fz[i], fm[i]);
}
}
return 0;
}
bzoj 2308 小Z的袜子(莫队算法)的更多相关文章
- bzoj 2038 小Z的袜子 莫队算法
题意 给你一个长度序列,有多组询问,每次询问(l,r)任选两个数相同的概率.n <= 50000,数小于等于n. 莫队算法裸题. 莫队算法:将序列分为根号n段,将询问排序,以L所在的块为第一关键 ...
- BZOJ 2038 小z的袜子 & 莫队算法(不就是个暴力么..)
题意: 给一段序列,询问一个区间,求出区间中.....woc! 贴原题! 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过 ...
- bzoj 2038 小z的袜子 莫队例题
莫队,利用可以快速地通过一个问题的答案得到另一问题的答案这一特性,合理地组织问题的求解顺序,将已解决的问题帮助解决当前问题,来优化时间复杂度. 典型用法:处理静态(无修改)离线区间查询问题. 线段树也 ...
- 【国家集训队2010】小Z的袜子[莫队算法]
[莫队算法][国家集训队2010]小Z的袜子 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程, ...
- [日常摸鱼]bzoj2038[2009国家集训队]小Z的袜子-莫队算法
今天来学了下莫队-这题应该就是这个算法的出处了 一篇别人的blog:https://www.cnblogs.com/Paul-Guderian/p/6933799.html 题意:一个序列,$m$次询 ...
- bzoj 2038 小z的袜子 莫队
莫队大法好,入坑保平安 只要能O(1)或O(log)转移,离线莫队貌似真的无敌. #include<cstdio> #include<iostream> #include< ...
- Luogu 1494 - 小Z的袜子 - [莫队算法模板题][分块]
题目链接:https://www.luogu.org/problemnew/show/P1494 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天 ...
- 小Z的袜子 & 莫队
莫队学习 & 小Z的袜子 引入 莫队 由莫涛巨佬提出,是一种离线算法 运用广泛 可以解决广大的离线区间询问题 莫队的历史 早在mt巨佬提出莫队之前 类似莫队的算法和莫队的思想已在Codefor ...
- BZOJ 2038 [2009国家集训队]小Z的袜子 莫队
2038: [2009国家集训队]小Z的袜子(hose) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Descriptionw ...
随机推荐
- [No0000C4]TortoiseSVN配置外部对比工具
TortoiseSVN -> Settings Diff Viewer : 选中External->找到外部工具:如BCompare.路径如果有空格的最好用"双引号"括 ...
- c# 字符串转为数字
C#判断输入是否数字 /// <summary> /// 判断输入是否数字 /// </summary> /// <param name="num"& ...
- sharepoint webapp 部署注意点
只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态.还请确保在应用程序配置的 // 节中包括 System.Web.SessionSta ...
- python下载youtube视频
谷歌开源了一个新的数据集,BoundingBox,(网址在这里)这个数据集是经过人工标注的视频数据集,自然想将它尽快地运用在实际之中,那么首先需要将其下载下来:可以看到网址上给出的是csv文件,该文件 ...
- springMVC(一): 整体请求过程概述
首先用户发送请求,DispatcherServlet实现了Servlet接口 获取url请求对应的处理方法,遍历handlerMappings列表,获取对象HandlerExecutionChain( ...
- ubuntu上make menuconfig出错
如果使用make menuconfig的方式配置内核,又碰巧系统没有安装ncurses库(ubuntu系统默认就没有安装此库),就会出现错误,错误信息大体上如下: *** Unable to find ...
- java执行字符串数学表达式【记录】
https://stackoverflow.com/questions/3422673/evaluating-a-math-expression-given-in-string-form 1. goo ...
- Ajax请求 一般处理程序参数传递的几种方式
//第一种Ajax请求 $.ajax({ type:"GET", //请求类型,有get,post等类型,和表单提交是一样的 url:"Result.aspx" ...
- The each() function is deprecated报错的解决方法
下午ytkah安装程序时出现了如下提示,意思是each函数过时了,可能跟php版本有关,因为今天早上刚把LAMP组件升级了,php升到7.2了,切换成php 7.1版本,提示消失了,可见PHP 7.2 ...
- 20181223 python 使用Beautiful Soup
(这篇,没什么营养价值) 怎么说呢! 爬虫吧!把html页面进行解析得到有效数据,而beautiful soup 能快速格式化页面再进行方法对数进行提取,存入想要存入的DB中. from bs4 im ...