洛谷P2709小B的询问

  • 莫队裸题,模板题
  • 莫队就是把询问区间排个序,先按左端点的Pos排序(POS是分块那个数组),pos一样的按右端点排序
  • 代码:
     #include <bits/stdc++.h>
    #define nmax 50010 using namespace std;
    int a[nmax],ta[nmax],cnt[nmax]={};
    int n,m,qn,k;
    struct que{
    int l,r,p,id;
    bool operator < (const que& x) const{ return (x.p==p)?(x.r>r):(x.p>p); }
    }q[nmax]; int main(){
    scanf("%d%d%d",&n,&qn,&k);
    m=sqrt(n);
    for (int i=; i<=n; i++) scanf("%d",&a[i]);
    for (int i=; i<=qn; i++) {
    scanf("%d%d",&q[i].l,&q[i].r);
    q[i].p=(q[i].l-)/m;
    q[i].id=i;
    }
    sort(q+,q+qn+);
    int l=q[].l,r=q[].l-,ans=;
    for (int i=; i<=qn; i++) {
    while(l>q[i].l) l--,ans+=(*cnt[a[l]]+),cnt[a[l]]++;
    while(r<q[i].r) r++,ans+=(*cnt[a[r]]+),cnt[a[r]]++;
    while(l<q[i].l) ans-=(*cnt[a[l]]-),cnt[a[l]]--,l++;
    while(r>q[i].r) ans-=(*cnt[a[r]]-),cnt[a[r]]--,r--;
    ta[q[i].id]=ans;
    }
    for (int i=; i<=qn; i++) printf("%d\n",ta[i]);
    return ;
    }

    ヽ✿゜▽゜)ノ

BZOJ3289: Mato的文件管理

  • 莫队加树状数组
  • 每次区间长度增加的时候加上移动次数,减少的时候减去本来的移动次数(题意是只能移动相邻的嘛)
  • 移动次数就是在当前区间的排名辣(因为要移动到那里去嘛,这个用树状数组很好维护。
  • 没注意看题目,没有离散化re到死(果然人傻就是有各种各样的问题,嘤)
  • 代码:
     #include <bits/stdc++.h>
    #define lowbit(x) x&(-x)
    #define nmax 50005 using namespace std;
    typedef long long ll;
    int n,q,bn; //bn为每块的大小
    int data[nmax],c[nmax]={},lsh[nmax];
    ll ans[nmax]={};
    struct seg{
    int l,r,pl,id;
    bool operator < (const seg a) const{ return (a.pl==pl)?(a.r>r):(a.pl>pl); }
    }qes[nmax]; void upd(int x,int y){ //y决定是加是减
    while(x<=n) { c[x]+=y; x+=lowbit(x); }
    } int myfind(int x){
    int ans=;
    while(x>) { ans+=c[x]; x-=lowbit(x); }
    return ans;
    } bool mycmp(int a,int b){ return data[a]<data[b]; } int main(){
    cin>>n;
    bn=sqrt(n);
    for (int i=; i<=n; i++) { scanf("%d",&data[i]); lsh[i]=i; }
    sort(lsh+,lsh+n+,mycmp);
    for (int i=; i<=n; i++) data[ lsh[i] ]=i;
    cin>>q;
    for (int i=; i<=q; i++) {
    scanf("%d%d",&qes[i].l,&qes[i].r);
    qes[i].id=i;
    qes[i].pl=(qes[i].l-)/bn+;
    }
    sort(qes+,qes+q+);
    int l=qes[].l,r=qes[].l-,nowl=,ta=; //nowl现在该区间的长度
    for (int i=; i<=q; i++) {
    while(qes[i].l<l) l--,upd(data[l],),ta+=( myfind(data[l])- ),nowl++;
    while(qes[i].r>r) nowl++,r++,upd(data[r],),ta+=( nowl-myfind(data[r]) );
    while(qes[i].l>l) ta-=( myfind(data[l])- ),upd(data[l],-),nowl--,l++;
    while(qes[i].r<r) ta-=( nowl-myfind(data[r]) ),upd(data[r],-),nowl--,r--;
    ans[ qes[i].id ]=ta;
    }
    for (int i=; i<=q; i++) printf("%lld\n",ans[i]);
    return ;
    }

    (╯▔皿▔)╯

wa自动机 的 莫队 刷题记录的更多相关文章

  1. AC 自动机刷题记录

    目录 简介 第一题 第二题 第三题 第四题 第五题 第六题 简介 这就是用来记录我对于<信息学奥赛一本通 · 提高篇>一书中的习题的刷题记录以及学习笔记. 一般分专题来写(全部写一起可能要 ...

  2. CODEFORCES 340 XOR and Favorite Number 莫队模板题

    原来我直接学的是假的莫队 原题: Bob has a favorite number k and ai of length n. Now he asks you to answer m queries ...

  3. $2019$ 暑期刷题记录1:(算法竞赛DP练习)

    $ 2019 $ 暑期刷题记录: $ POJ~1952~~BUY~LOW, BUY~LOWER: $ (复杂度优化) 题目大意:统计可重序列中最长上升子序列的方案数. 题目很直接的说明了所求为 $ L ...

  4. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  5. [2009国家集训队]小Z的袜子(hose)(BZOJ2038+莫队入门题)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2038 题目: 题意:中文题意,大家都懂. 思路:莫队入门题.不过由于要去概率,所以我们假 ...

  6. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  7. 清橙A1206.小Z的袜子 && CF 86D(莫队两题)

    清橙A1206.小Z的袜子 && CF 86D(莫队两题) 在网上看了一些别人写的关于莫队算法的介绍,我认为,莫队与其说是一种算法,不如说是一种思想,他通过先分块再排序来优化离线查询问 ...

  8. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  9. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

随机推荐

  1. MyEclipse10下载安装破解及汉化内含jdk8u241及其帮助文档

    下载MyEclipse10以及破解包 MyEclipse10: 提取码:020c 破解包 提取码:mycj 注:破解包内含有破解教程,很详细,这里就不多说了 MyEclipse10汉化 操作系统:wi ...

  2. Java日志介绍(4)-Log4j2

    Log4j2是Log4j的升级版,相比其前身Log4j 1.x提供了显著的改进,并提供了在Logback中提供的许多改进,同时修复了Logback体系结构中的一些固有问题. Log4j2的内容很多,本 ...

  3. jvm 内存结构

    jvm 内存结构 graph TB A(jvm)-->E(类加载器系统) A-->B(运行时数据区) A-->D(本地库接口) A-->C(执行引擎) B-->虚拟机栈 ...

  4. Javascript 基础学习(六)js 的对象

    定义 对象是JS中的引用数据类型.对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性.使用typeof检查一个对象时,会返回object. 分类 内置对象 由ES标准定义的对象,在任何ES ...

  5. OpenResty + ngx_lua_waf使用

    本篇介绍在CentOS7.6上安装.测试使用ngx_lua_waf + openresty. Preface # yum install epel-release -y # yum group ins ...

  6. VUE中使用XLSX实现导出excel表格

    简介 项目中经常会用导出数据的场景,这里介绍 VUE 中如何使用插件 xlsx 导出数据 安装 ## 1.使用 npm 或 yarn 安装依赖(三个依赖) npm install -S file-sa ...

  7. Remoting、WCF、WebAPI、WCFREST、WebService之间的区别与联系

    在.net平台下,有大量的技术让你创建一个服务,像Web Service,WCF,Web API,Remoting,我们来对比一下他们的区别与联系 Remoting Web Service WCF W ...

  8. Oracle12c传统数据库模式 OGG

    OGG12C 配置 环境配置: 安装数据库Oracle12c 安装源端OGG:oggs  PORT:7809 安装目标端OGG:oggt   PORT:7909 源端和目标端地址:127.0.0.1 ...

  9. 剑指offer-面试题49-丑数-空间换时间

    /* 题目: 求从1开始的第n个丑数. */ /* 思路: 按顺序列出各个丑数. */ #include<iostream> #include<cstring> #includ ...

  10. Apache Solr Velocity模板注入rce+获取交互式shell

    前言: 官方的poc.exp payload只能获取很低的命令执行权限,甚至有些符号.命令还被过滤了,例如管道符被过滤.并且不能写入.下载文件,不能使用管道符重定向文件.那么我们只能通过获取到交互式s ...