https://www.lydsy.com/JudgeOnline/problem.php?id=2038

题解:分块+莫队算法

参考文章:https://blog.csdn.net/weixin_43272781/article/details/86582353

/*
*@Author:   STZG
*@Language: C++
*/
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=50000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
int t,n,m,k,q;
ll ans,cnt,flag,temp,num;
int a[N];
int pos[N];
int f[N];
char str;
ll gcd(ll a,ll b){if(a<b)swap(a,b);while(b){int r=a%b;a=b;b=r;}return a;
}
struct node{int l,r,id;ll a,b;void mod(){ll tmp=gcd(a,b);a/=tmp;b/=tmp;}bool operator <(const node &S)const{if(pos[l]==pos[S.l])return pos[r]<pos[S.r];return pos[l]<pos[S.l];}}e[N];
bool cmp(const node a,const node b){return a.id<b.id;
}
void modify(int p,int add){ans=ans+2*add*f[a[p]]+1;f[a[p]]+=add;
}
int main()
{
#ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout);
#endifscanf("%d%d",&n,&m);//scanf("%d",&t);//while(t--){}q=sqrt(n);for(int i=1;i<=n;i++)pos[i]=(i-1)/q+1;for(int i=1;i<=n;++i)scanf("%d",&a[i]);for(int i=1;i<=m;++i){scanf("%d%d",&e[i].l,&e[i].r);e[i].id=i;}sort(e+1,e+m+1);int l=1,r=0;for(int i=1;i<=m;++i){if(r<e[i].r){while(++r<e[i].r)modify(r,1);modify(r,1);}if(l>e[i].l){while(--l>e[i].l)modify(l,1);modify(l,1);}if(e[i].r<r){modify(r,-1);while(e[i].r<--r)modify(r,-1);}if(l<e[i].l){modify(l,-1);while(++l<e[i].l)modify(l,-1);}if(e[i].l==e[i].r){e[i].a=0;e[i].b=1;continue;}e[i].a=ans-(e[i].r-e[i].l+1),e[i].b=(ll)(e[i].r-e[i].l+1)*(e[i].r-e[i].l);e[i].mod();}sort(e+1,e+m+1,cmp);for(int i=1;i<=m;++i)printf("%lld/%lld\n",e[i].a,e[i].b);//cout << "Hello world!" << endl;return 0;
}

小Z的袜子(hose)相关推荐

  1. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 9894  Solved: 4561 [Su ...

  2. 2038: [2009国家集训队]小Z的袜子(hose)+莫队入门

    题目链接:2038: [2009国家集训队]小Z的袜子(hose) 题目: Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再 ...

  3. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 分块

    分块大法好 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 2938  Solved: 13 ...

  4. BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MB Submit: 19269 Solved: 8851 [Sub ...

  5. 莫队算法 BOJ 2038 [2009国家集训队]小Z的袜子(hose)

    题目传送门 1 /* 2 莫队算法:求出[l, r]上取出两只相同袜子的个数. 3 莫队算法是离线处理一类区间不修改查询类问题的算法.如果你知道了[L,R]的答案,可以在O(1)的时间下得到 4 [L ...

  6. 2038: [2009国家集训队]小Z的袜子(hose)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 15879  Solved: 7205 [S ...

  7. bzoj2038[2009国家集训队]小Z的袜子(hose)

    bzoj2038[2009国家集训队]小Z的袜子(hose) 题意: 把N只袜子从1到N编号,每次求从编号为L到R的袜子中抽两只,有多大的概率抽到颜色相同的袜子. 题解: 不知道要用什么数据结构,但是 ...

  8. 莫队(bzoj 2038: [2009国家集训队]小Z的袜子(hose))

    莫队也是暴力的一种,不过可以很有效的降低复杂度 如果我们已知[l, r]的答案,能在O(1)时间得到[l+1,r]的答案以及[l, r-1]的答案,即可使用莫队算法. 时间复杂度为O(n^1.5).如 ...

  9. 小Z的袜子(hose) (莫队算法入门)

    小Z的袜子(hose) 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只 ...

  10. (莫队算法)2038: 小Z的袜子(hose)

    今天学习了一个新的套路:莫队算法 这个算法是用于离线求解区间查询问题的. 区间查询问题通常是如下形式: 给出一个数组1,1,1,1,2,2,2,2,3,3,3,3.... 求解在[l1,r1][l2, ...

最新文章

  1. cat/tac/more/less 命令详解
  2. 一次编译libmono.so的记录
  3. python中链表和数组_Python
  4. J .U.C 中的原子操作类
  5. 数据库---分组查询
  6. 撸表情开发过程中使用腾讯云存储的接入实例分享
  7. 收获,不止SQL优化——抓住SQL的本质--第六章
  8. Vue中$refs的理解
  9. 从0到1告诉你搭建完整Python+requests接口自动化测试框架!
  10. 关键字 标识符 数据类型
  11. 手把手学习企业型网站之三firework做顶部的banner+nav
  12. 在线图片编辑器/在线视频剪辑器/网站源码
  13. python一维数组定义,python如何定义数组
  14. 【Unity3D 灵巧小知识点】 ☀️ | 层级面板中的 ‘小手指‘ 作用: 在Scen中将该物体设置为不可选中状态
  15. ReentrantLock 实现原理笔记(一)
  16. 绘图杂记【3】Python / R语言 制作峰峦图
  17. http网站怎么配置https防劫持
  18. Vmware安装Centos及Linux的介绍,命令
  19. Java 使用注解检验手机号
  20. CuteFTP上传脚本(VBS)

热门文章

  1. 面向dba的linux shell 脚本简介,面向dba的linuxshell脚本简介.doc
  2. 观察内核linux行为,观察linux行为 实验报告.doc
  3. windows php postgre,windows下php不支持pgsql的解决方法
  4. linux物理内存虚拟内存一致,Liunx内存管理的调用和实现
  5. 比亚迪汉鸿蒙系统测评_余承东携鸿蒙OS亲自站台,比亚迪汉凭借刀片电池能否对抗Model 3?...
  6. 单调不减序列查询第一个大于等于_[力扣84,85] 单调栈
  7. java 返回值void_Java的返回值voidspeak
  8. 四十八、使用Python和Stata完成广西碳酸钙企业的主成分分析和因子分析
  9. 第一行冻结_EXCEL函数tips(4) 数据冻结和查找
  10. 大会剧透 | IDEA大会精彩议题全释放