纪念自己独立完成的一道省选题(菜鸡如我只会看题解qwq)

还算是一道比较裸的莫队题把,比有的题目简单很多,也很好想怎么O(1)转移,比别的题就多了一个组合数计算(还有gcd??),还没算%意义下,也是很良心了

int get(int x){
if(x<=1)return 0;
return (int)(1.0*x*(x-1)*1.0/2.0);
}

直接获得当前的可能情况。

然后就是莫队的一套全家桶模板了。话说,莫队分块真的很玄学!

对了 题目还贴心的提示了特判问题 luogu不要太好。。!~~

这几天写了一些莫队题。莫队入门的话还是去写那些区间不重复数个数把,应该是最简单的题了(如果不卡莫队的话)然后对转移的add,del函数自己要推一下,然后套个全家桶就完事了

#include<bits/stdc++.h>
#define swap(a,b) {a^=b;b^=a;a^=b}
#define rep(a,b,c) for(int a=b;a<=c;a++)
#define per(i,n,a) for (int i=n;i>=a;i--)
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define PII pair<int,int>
#define yxdl(qt) priority_queue<int,vector<int>,greater<int> >qt
#define xgd(qt) priority_queue<int,vector<int>,less<int> >qt
#define INF 0x3f3f3f3f
#define lowbit(x) x & -x
#define cs(s) freopen(s,"r",stdin)
#define debug(x) printf(" case-->%d ",x );
using namespace std;
typedef long long ll;
const int maxn =50101;
int a[maxn],flag[maxn],n,m,div1,l=0,r,up,down;
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
int get(int x){
if(x<=1)return 0;
return (int)(1.0*x*(x-1)*1.0/2.0);
}
struct uzi
{
int l,r,id;
bool operator<(const uzi &a)const {
return l/div1==a.l/div1?r<a.r:l<a.l;
}
}p[maxn];
void del(int x){
up-=get(flag[a[x]]);
flag[a[x]]--;
if(flag[a[x]]<=1)return;
up+=get(flag[a[x]]);
}
void add(int x){
up-=get(flag[a[x]]);
flag[a[x]]++;
up+=get(flag[a[x]]);
}
struct node
{
int up,down;
}ans[maxn];
int main(){
scanf("%d%d",&n,&m);
rep(i,1,n)scanf("%d",&a[i]);
div1=sqrt(n);
rep(i,1,m){
scanf("%d%d",&p[i].l,&p[i].r);
p[i].id=i;
}
sort(p+1,p+1+m);
int bj[maxn];
int po=0;
rep(i,1,m){
if(p[i].l==p[i].r){ans[p[i].id].up=0;ans[p[i].id].down=1;bj[++po]=p[i].id;}
else{
while(l<p[i].l)del(l++);
while(l>p[i].l)add(--l);
while(r<p[i].r)add(++r);
while(r>p[i].r)del(r--);
ans[p[i].id].up=up;
ans[p[i].id].down=get(r-l+1);
}
}
rep(i,1,m){
if(ans[i].up==0){puts("0/1");continue;}
int qq=gcd(ans[i].up,ans[i].down);
printf("%d/%d\n",ans[i].up/qq,ans[i].down/qq );
}
}

洛谷P1494 【[国家集训队]小Z的袜子】的更多相关文章

  1. 洛谷 P1494 [国家集训队] 小Z的袜子

    题目概述: 小Z把N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务 ...

  2. 洛谷 P1494 [国家集训队]小Z的袜子(莫队)

    题目链接:https://www.luogu.com.cn/problem/P1494 一道很经典的莫队模板题,然而每道莫队题的大体轮廓都差不多. 首先莫队是一种基于分块的算法,它的显著特点就是: 能 ...

  3. 洛谷P1494 [国家集训队]小Z的袜子

    Code: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...

  4. P1494 [国家集训队]小Z的袜子

    题目 P1494 [国家集训队]小Z的袜子 解析 在区间\([l,r]\)内, 任选两只袜子,有 \[r-l+1\choose2\] \[=\frac{(r-l+1)!}{2!(r-l-1)!}\] ...

  5. P1494 [国家集训队]小Z的袜子/莫队学习笔记(误

    P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他 ...

  6. P1494 [国家集训队]小Z的袜子(luogu)

    P1494 小Z的袜子 终于了解了莫队算法(更专业的名称Square Root Decomposition of Queries) 莫队算法: 一般来说解决静态(实际上也有修改的但复杂度更高)的离线( ...

  7. P1494 [国家集训队]小Z的袜子(莫队)

    题目链接:https://www.luogu.org/problemnew/show/P1494 题目大意:中文题目 具体思路:计算概率的时候,每一次是区间的移动,每一次移动,记得先将原来的记录的影响 ...

  8. 【luogu P1494 [国家集训队]小Z的袜子】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1494 #include <cstdio> #include <algorithm> ...

  9. luogu P1494 [国家集训队]小Z的袜子 ( 普 通 )

    题目:    链接:https://www.luogu.org/problemnew/show/P1494 题意:一些袜子排成一排,每个袜子有固定的颜色.                        ...

  10. Luogu P1494 [国家集训队]小Z的袜子

    比较简单的莫队题,主要是为了熟练板子. 先考虑固定区间时我们怎么计算,假设区间\([l,r]\)内颜色为\(i\)的袜子有\(cnt_i\)只,那么对于颜色\(i\)来说,凑齐一双的情况个数为: \( ...

随机推荐

  1. 第二十五篇-Android 应用资源

    这里介绍android的一些资源文件. 以一个登录界面为例. layout.xml <?xml version="1.0" encoding="utf-8" ...

  2. python--数据类型bytes

    在Python3以后,字符串和bytes类型彻底分开了.字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的. bytes数据类型在所有的操作和使用甚至内置方法上和字符串数据类型基本一样 ...

  3. Python之常用模块--collections模块

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  4. js怎么获取微信浏览器内容的高度

    通过window对象来得到窗口相关的内外款高度信息,如下: outerHeight属性设置或返回一个窗口的外部高度,包括所有界面元素(如工具栏/滚动条).outerWidth属性设置或返回窗口的外部宽 ...

  5. noi.openjudge 1.13.15

    http://noi.openjudge.cn/ch0113/15/ 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个长度为N的整数序列 (不多于128个整数),每个整数的范 ...

  6. HTML学习笔记Day4

    一.浮动属性 1.首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流: 无论多么复杂的布局,其基本出发点均是:“如何在一行显示多个div元素”: 显然标准流已经无法满足需求 ...

  7. windows server 2012 流媒体服务器搭建(直播与点播)

    IIS Live Smooth Streaming(实时平滑流式处理)是微软下一代流媒体解决方案.该技术是在IIS web中集成媒体传输平台IIS media services,实现利用标准 HTTP ...

  8. (BFS 二叉树) leetcode 515. Find Largest Value in Each Tree Row

    You need to find the largest value in each row of a binary tree. Example: Input: 1 / \ 3 2 / \ \ 5 3 ...

  9. CodeForces12D 树状数组降维

    http://codeforces.com/problemset/problem/12/D 题意 给N (N<=500000)个点,每个点有x,y,z ( 0<= x,y,z <=1 ...

  10. 3D转换(位置)+过渡+透视

    效果如图: html代码: <div class="door"> <div class="in"><div> </di ...