首页 > 其他分享 >BZOJ 2038 小Z的袜子(hose) (莫队离线)

BZOJ 2038 小Z的袜子(hose) (莫队离线)

时间:2023-04-13 21:40:23浏览次数:43  
标签:ha hose const int LL 离线 MAXN include BZOJ

题目地址:BZOJ 2038
裸的莫队算法。
代码如下:

#include <iostream>
#include <string.h>
#include <math.h>
#include <queue>
#include <algorithm>
#include <stdlib.h>
#include <map>
#include <set>
#include <stdio.h>
#include <time.h>
using namespace std;
#define LL long long
#define pi acos(-1.0)
#pragma comment(linker, "/STACK:1024000000")
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
const double eqs=1e-9;
const int MAXN=50000+10;
int a[MAXN], ha[MAXN];
LL ans1[MAXN], ans2[MAXN];
struct node
{
        int l, r, id, pos;
}fei[MAXN];
LL gcd(LL x, LL y)
{
        return y==0?x:gcd(y,x%y);
}
bool cmp(node x, node y)
{
        return x.pos<y.pos||(x.pos==y.pos&&x.r<y.r);
}
int main()
{
        int n, m, i, j, l, r, k;
        LL res, Gcd;
        while(scanf("%d%d",&n,&m)!=EOF){
                for(i=1;i<=n;i++){
                        scanf("%d",&a[i]);
                }
                k=sqrt(n*1.0)+0.5;
                for(i=0;i<m;i++){
                        scanf("%d%d",&fei[i].l,&fei[i].r);
                        fei[i].id=i;
                        fei[i].pos=fei[i].l/k;
                }
                sort(fei,fei+m,cmp);
                memset(ha,0,sizeof(ha));
                l=1;
                r=0;
                res=0;
                for(i=0;i<m;i++){
                        while(r>fei[i].r){
                                res-=(LL)ha[a[r]]-1;
                                ha[a[r]]--;
                                r--;
                        }
                        while(r<fei[i].r){
                                r++;
                                ha[a[r]]++;
                                res+=(LL)ha[a[r]]-1;
                        }
                        while(l>fei[i].l){
                                l--;
                                ha[a[l]]++;
                                res+=(LL)ha[a[l]]-1;
                        }
                        while(l<fei[i].l){
                                res-=(LL)ha[a[l]]-1;
                                ha[a[l]]--;
                                l++;
                        }
                        ans1[fei[i].id]=res;
                        ans2[fei[i].id]=(LL)(r-l+1)*(r-l)/2;
                }
                for(i=0;i<m;i++){
                        if(!ans1[i]){
                                puts("0/1");
                                continue;
                        }
                        Gcd=gcd(ans1[i],ans2[i]);
                        printf("%lld/%lld\n",ans1[i]/Gcd,ans2[i]/Gcd);
                }
        }
        return 0;
}

标签:ha,hose,const,int,LL,离线,MAXN,include,BZOJ
From: https://blog.51cto.com/u_16070138/6188399

相关文章

  • BZOJ 2243 [SDOI2011] 染色 (树链剖分)
    题目地址:BZOJ2243普通的树链剖分,用线段树维护区间段数与最左边和最右边的颜色。然后当合并区间的时候判断一下左儿子的右端与右儿子的左端是否相同,若相同,则将和减去1.同样,在迭代求值的过程中,也要记录下上条链的最顶端的颜色。代码如下:#include<iostream>#include<strin......
  • BZOJ 1036 [ZJOI2008] 树的统计Count (树链剖分)
    题目地址:BZOJ1036树链剖分裸题,需要用线段树同时维护最大值与和值两个信息,只是代码量大一点而已。。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#include<algorithm>#include<stdlib.h>#include<map>#include<set&g......
  • python 离线安装包
    下载好第三方库,上传到服务器,用pip命令执行安装通过pypi官网下载包pypi官网提供各种Python的第三方库,主要提供Linux版本的后缀是".whl"和“.tar.gz”,可以搜索相关的包。".whl"文件离线安装(推荐)#以Markdown为例(默认文件在当前目录下)pipinstallMarkdown-3.2.2-py3-none-any.wh......
  • Cesium离线部署的正确方法
    网上相关文章比较杂,有的说要改源码,其实不用,都试了一遍发现这样才对varmyProviderViewModel=newCesium.ProviderViewModel({name:"天地图地形",tooltip:"",iconUrl:"Widgets/Images/ImageryProviders/naturalEarthII.png",c......
  • win10、win2016离线安装 .netframework3.5
    下载地址:(网上收集的)   https://pan.baidu.com/s/1O24nLgXhehHveae25p9SLg密码:amgu   https://url93.ctfile.com/f/29519493-531656763-281351(访问密码:8843)   https://soft.3dmgame.com/down/205311.html下载NetFx3.cab后将其放于C盘WINDOWS文件夹下(C:\Windows)点击“......
  • 离线安装Docker、docker-compose、harbor、rancher、jenkins
    全文重点参考:https://blog.csdn.net/yuyangchenhao/article/details/117573732部署环境:1.centos72.ubuntu22.043.树莓派(这部分另写)离线环境下部署。0.前期准备  本文使用了上面博客提供的全部文件,可自行下载:https://pan.baidu.com/s/1Vp8R0Ac8KLHw2KlOiqtK8A......
  • #yyds干货盘点#【愚公系列】2023年04月 .NET CORE工具案例-多语言离线翻译系统
    前言1.在线翻译在线翻译,一般是指在线翻译工具,如百度翻译、阿里翻译1688或Google翻译等。这类翻译工具的作用是利用计算机程序将一种自然语言(源语言)转换为另一种自然语言(目标语言)。其原理是依托海量的互联网数据资源和自然语言处理技术,在数百万篇文档中查找各种模式,以求解最佳......
  • .NET Core 离线 生成 Tron 波场私钥和地址笔记
    NuGet引入依赖库PM>Install-PackageTron.Wallet.Net随机生成私钥和对应的地址usingTron.Wallet.Net;namespaceConsoleApp1{internalclassProgram{staticasyncTaskMain(string[]args){vartronECKey=TronECKey.GenerateKey(TronN......
  • ubuntu离线安装tcpdump
    环境DistributorID: UbuntuDescription: Ubuntu16.04.5LTSRelease: 16.04Codename: xenial准备安装包tcpdump官网:https://www.tcpdump.org/因为ubuntu版本是16.04,所以选择了16.04推荐的版本,安装tcpdump需要提前安装libpcap。https://www.tcpdump.org/release/libpcap-1......
  • 搭建本地离线yum仓库
    搭建本地离线yum仓库我们知道yum工具是基于rpm的,其一个重要的特性就是可以自动解决依赖问题,但是yum的本质依旧是把后缀名.rpm的包下载到本地,然后按次序安装之。但是每次执行yuminstallxxx,会自动安装并且安装完毕后把rpm包自动删除。当我们下载比较大的服务,比如MySQL大约190M,每......