P4168-[Violet]蒲公英【分块】

正题

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P4168


题目大意

询问区间众数


解题思路

将数字离散化,然后分块。对于数组vi,j,kv_{i,j,k}vi,j,k,表示i∼ji\sim jij个块,kkk的个数。对于询问(l,r)(l,r)(l,r),将整块的直接累计,然后局部的直接暴力。

时间复杂度:O(NT2+MNT)O(NT^2+\frac{MN}{T})O(NT2+TMN),根据LYD的说法,让T≈n3T\approx \sqrt[3]nT3n的话,时间复杂度就可以在O(N53)O(N^{\frac{5}{3}})O(N35)级别。

代码写优美些或者加点优化就可以过。


code

#pragma GCC optimize(2)
%:pragma GCC optimize(3)
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
%:pragma GCC optimize("-fgcse")
%:pragma GCC optimize("-fgcse-lm")
%:pragma GCC optimize("-fipa-sra")
%:pragma GCC optimize("-ftree-pre")
%:pragma GCC optimize("-ftree-vrp")
%:pragma GCC optimize("-fpeephole2")
%:pragma GCC optimize("-ffast-math")
%:pragma GCC optimize("-fsched-spec")
%:pragma GCC optimize("unroll-loops")
%:pragma GCC optimize("-falign-jumps")
%:pragma GCC optimize("-falign-loops")
%:pragma GCC optimize("-falign-labels")
%:pragma GCC optimize("-fdevirtualize")
%:pragma GCC optimize("-fcaller-saves")
%:pragma GCC optimize("-fcrossjumping")
%:pragma GCC optimize("-fthread-jumps")
%:pragma GCC optimize("-funroll-loops")
%:pragma GCC optimize("-fwhole-program")
%:pragma GCC optimize("-freorder-blocks")
%:pragma GCC optimize("-fschedule-insns")
%:pragma GCC optimize("inline-functions")
%:pragma GCC optimize("-ftree-tail-merge")
%:pragma GCC optimize("-fschedule-insns2")
%:pragma GCC optimize("-fstrict-aliasing")
%:pragma GCC optimize("-fstrict-overflow")
%:pragma GCC optimize("-falign-functions")
%:pragma GCC optimize("-fcse-skip-blocks")
%:pragma GCC optimize("-fcse-follow-jumps")
%:pragma GCC optimize("-fsched-interblock")
%:pragma GCC optimize("-fpartial-inlining")
%:pragma GCC optimize("no-stack-protector")
%:pragma GCC optimize("-freorder-functions")
%:pragma GCC optimize("-findirect-inlining")
%:pragma GCC optimize("-fhoist-adjacent-loads")
%:pragma GCC optimize("-frerun-cse-after-loop")
%:pragma GCC optimize("inline-small-functions")
%:pragma GCC optimize("-finline-small-functions")
%:pragma GCC optimize("-ftree-switch-conversion")
%:pragma GCC optimize("-foptimize-sibling-calls")
%:pragma GCC optimize("-fexpensive-optimizations")
%:pragma GCC optimize("-funsafe-loop-optimizations")
%:pragma GCC optimize("inline-functions-called-once")
%:pragma GCC optimize("-fdelete-null-pointer-checks")
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define Tn 40
#define N 40010
using namespace std;
int n,m,L[Tn],R[Tn],v[Tn][Tn][N],l,r,num[N];
int z[N],w[N],a[N],cnt,k[N],t,T,pos[N],x;
bool cmp(int x,int y)//排序
{return z[x]<z[y];}
void begins()//预处理
{for(int i=1;i<=t;i++){L[i]=(i-1)*T+1;R[i]=i*T;}if(R[t]<n) t++,L[t]=R[t-1]+1,R[t]=n;//计算边界for(int i=1;i<=t;i++)for(int j=i;j<=t;j++)for(int k=L[i];k<=R[j];k++)v[i][j][a[k]]++;//计算v数组
}
int ask(int l,int r)
{int p=pos[l],q=pos[r];if(p-q<=2){memset(k,0,sizeof(k));for(int i=l;i<=r;i++)k[a[i]]++;}else{p++;q--;for(int i=1;i<=cnt;i++)k[i]=v[p][q][i];//直接累计for(int i=l;i<L[p];i++)//暴力统计k[a[i]]++;for(int i=R[q]+1;i<=r;i++)//暴力统计*2k[a[i]]++;}int mark=1;for(int i=2;i<=cnt;i++)//找众数if(k[i]>k[mark]) mark=i;return w[mark];
}
int main()
{scanf("%d%d",&n,&m);t=(int)pow(double(n),1.0/3);T=n/t;for(int i=1;i<=n;i++){scanf("%d",&z[i]);num[i]=i;}sort(num+1,num+1+n,cmp);z[0]=-1;for(int i=1;i<=n;i++)//离散化{if(z[num[i]]!=z[num[i-1]]) cnt++,w[cnt]=z[num[i]];;a[num[i]]=cnt;}T=n/t;begins();for(int i=1;i<=m;i++){scanf("%d%d",&l,&r);l=(l+x-1)%n+1;r=(r+x-1)%n+1;if(l>r) swap(l,r);printf("%d\n",x=ask(l,r));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用acs-engine在Azure中国区部署kubernetes集群详解

1. acs-engine简介 ACS是微软在2015年12月推出的一项基于容器的云端PaaS服务。说简单点&#xff0c;acs-engine就是一个ARM模板生成器&#xff0c;用户只需要配置几个简单的参数来描述容器集群的规格&#xff0c;然后acs-engine将这个容器集群描述文件转化成一组ARM&#xff08…

C++描述杭电OJ 2011.多项式求和 ||

C描述杭电OJ 2011.多项式求和 || Problem Description 多项式的描述如下&#xff1a; 1 - 1/2 1/3 - 1/4 1/5 - 1/6 … 现在请你求出该多项式的前n项的和。 Input 输入数据由2行组成&#xff0c;首先是一个正整数m&#xff08;m<100&#xff09;&#xff0c;表示测试实…

【Java】continue和break区别

先总结下&#xff1a;break先跳出整个大的循环&#xff0c;而continue跳出的是相对小的循环 也就是说他们的区别核心在于循环的大小 就举个例子吧&#xff0c;用for循环从一数到十&#xff0c;到五用上break和continue的区别 用break&#xff1a; public class test_01 { pu…

JS中令人发指的valueOf方法介绍

转载自 JS中令人发指的valueOf方法介绍 彭老湿近期月报里提到了valueOf方法&#xff0c;兴致来了翻了下ECMA5里关于valueOf方法的介绍&#xff0c;如下&#xff1a; 15.2.4.4 Object.prototype.valueOf ( ) When the valueOf method is called, the following steps are take…

P3203-[HNOI2010]弹飞绵羊【分块】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP3203 题目大意 nnn个装置。到第iii个装置会被往前弹aia_iai​个。 两种操作 修改aia_iai​和询问从iii出发要多少次弹射可以弹出去。 解题思路 分块。对于每个点&#xff0c;维护要多少步弹出该块和弹…

Lyft的TypeScript实践

来自Lyft的前端工程师Mohsen Azimi介绍了Lyft向TypeScript转型的过程&#xff0c;说明JavaScript类型系统的重要性、为什么Lyft选择TypeScript以及他们的一些实践经验。以下内容翻译自作者的博客&#xff0c;查看原文TypeScript at Lyft。 在我刚刚成为JavaScript开发者的时候&…

【Python】Conda的安装

挖个坑&#xff0c;以后自己慢慢填&#xff1a;下载conda后无法使用 conda优势&#xff1a;conda将几乎所有的工具、第三方包都当做package对待&#xff0c;甚至包括python和conda自身&#xff01;因此&#xff0c;conda打破了包管理与环境管理的约束&#xff0c;能非常方便地…

C++描述杭电OJ 2014. 青年歌手大奖赛_评委会打分 ||

C描述杭电OJ 2014. 青年歌手大奖赛_评委会打分 || Problem Description 青年歌手大奖赛中&#xff0c;评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分&#xff0c;然后计算平均得分&#xff0c;请编程输出某选手的得分。 Input 输入数据有多组&#xff0c…

Java AIO 编程

转载自 java aio 编程 Java NIO (JSR 51)定义了Java new I/O API&#xff0c;提案2000年提出,2002年正式发布。 JDK 1.4起包含了相应的API实现。 JAVA NIO2 (JSR 203)定义了更多的 New I/O APIs&#xff0c; 提案2003提出&#xff0c;直到2011年才发布&#xff0c; 最终在JDK …

P1494-[国家集训队]小Z的袜子【分块优化莫队】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP1494 题目大意 区间任意取两个数&#xff0c;求取到相同的数的概率。 解题思路 假设一个区间有x个y&#xff0c;那么两个都取到y的方案数是x∗(x−1)x*(x-1)x∗(x−1)&#xff0c;那么取到相同总共方…

通过Swashbukle给DotNet Core Web API 增加自动文档功能

DotNet Core Web API给开发者提供了一个很好的框架来开发Restful的API。那么这些API接口该如何管理起来呢&#xff1f;Swagger是一个很好的选择&#xff0c;Swagger不需要开发者额外去维护接口文档&#xff0c;只要开发者的接口遵循Restful的规范&#xff0c;Swagger就会根据AP…

【Python】urllib爬取动漫图片

首先附上需要爬取图片的网站&#xff0c;应该算是个冷门网站&#xff0c;够练手用的了&#xff0c;我的博客图片大部分来自于这里 二次元图片网站 筛选src里的数据 用par r’<img src"[^"].jpg">可以筛选出带有里面的内容 htmldasdas <img src"…

P4137-Rmq Problem/mex【莫队,分块】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP4137 题目大意 求区间mex。 解题思路 开始发现aia_iai​很大&#xff0c;开不了桶。但是转念一想&#xff0c;如果ans>n1ans>n1ans>n1仅当前n1个都有&#xff0c;可是最多只有n个&#xff…

【Python】字符串和变量拼接的写法

我的需求是改变url地址的后缀&#xff0c;其他不改&#xff0c;所以直接for循环&#xff0c;变换数字就行 也就是 字符串变量字符串 想着改变后缀就能批量爬图。但是原本的想法是错误的 for num in range(2,8):url"http://www.win4000.com/wallpaper_detail_160877_"…

Java面试,如何在短时间内做突击

转载自 Java面试&#xff0c;如何在短时间内做突击 面试技术文 Java岗 面试考点精讲&#xff08;基础篇01期&#xff09; Java岗 面试考点精讲&#xff08;基础篇02期&#xff09; Java岗 面试考点精讲&#xff08;网络篇03期&#xff09; Java 面试中遇到的坑 Java面试中…

【学校作业】学生数据打印

数据结构课程布置了一门c语言的结构体作业 要求&#xff1a; 五个学生&#xff0c;数据包括学号&#xff0c;姓名&#xff0c;3门课的成绩&#xff0c;从键盘输入5个学生的数据。打印出3门课总平均成绩&#xff0c;以及最高分 强迫症患者表示打印出的数据必须美观&#xff0c; …

P4879-ycz的妹子【分块】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP4879 题目大意 有若干种操作 Cxy:ax−yC\ x\ y:a_x-yC x y:ax​−yIxy:I\ x\ y:I x y:加一个(原本有的话就改变)axya_xyax​yQ:Q:Q:询问所以数的和Dx:D\ x:D x:删除第xxx个(有的才算)数。 解题思路 …

Entity Framework Core 2.0 使用入门

一.前言 Entity Framework&#xff08;后面简称EF&#xff09;作为微软家的ORM&#xff0c;自然而然从.NET Framework延续到了.NET Core。以前我也嫌弃EF太重而不去使用它&#xff0c;但是EF Core&#xff08;Entity Framework Core&#xff09;已经做了很多性能优化&#xff0…

JavaFX中WebView的java与JS代码互相调用

java代码 package main;import javafx.application.Application; import javafx.beans.value.ObservableValue; import javafx.concurrent.Worker; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.VBox; import javafx.scene.w…

【Python】有效资源爬取并集

由于爬虫代码都不多&#xff0c; 所以我决定在这篇博文上更新所有我觉得比较实用的python代码 方便以后自己调用 环境:python3.7 百度图片爬虫 二次元图片爬取 唐三小说爬取 文件格式命名 百度图片爬虫 百度图片网站 import re import requests from urllib import err…