【BZOJ 3339 / BZOJ 3585 / luogu 4137】Rmq Problem / mex

【原題題面】傳送門

【題解大意】

都說了是莫隊練習題。

考慮已知[l,r]區間的mex值時,如何求[l+1,r]的mex值。

比較a[l+1]與已知ans的大小,如果a[l+1]>ans或者a[l+1]<ans,均對答案沒有影響。

如果a[l+1]==ans,考慮找到一個比當前ans更大且出現次數為0的點。

其余的區間擴展亦同理。

交上去的代碼一直WA,各路神仙路過請幫忙看下,謝謝!

【code】

#include<bits/stdc++.h>
using namespace std;
#define File "testdata"
#define ll long long
inline void file(){freopen(File".in","r",stdin);freopen(File".ans","w",stdout);
}
inline int read(){int x=0,f=1;   char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0'; ch=getchar();}return x*f;
}
const int mxn = 2e5+5;
int n,m,Block;
int a[mxn],cnt[mxn],ans[mxn];
struct Q{int l,r,id;
}q[mxn];inline bool cmp1(Q x,Q y){if((x.l/Block)^(y.l/Block)) return x.l < y.l;else if((x.l/Block)&1) return x.r < y.r;return x.r > y.r;
}int answer = 0;
inline void mov1(int x){cnt[a[x]] ++;if(cnt[a[x]]==1 && answer==a[x]){int t = a[x];while(++t && !cnt[t]){answer = t;return;}}
}//add
inline void mov2(int x){cnt[a[x]] --;if(answer>a[x] && !cnt[a[x]]){answer = a[x];return;}
}//delint main(){
//    file();n = read(),m = read();for(int i = 1;i <= n; ++i) a[i] = read();for(int i = 1;i <= m; ++i)q[i].l = read(),q[i].r = read(),q[i].id = i;Block = (int)sqrt(n);int l(1),r(0);sort(q+1,q+m+1,cmp1);for(int i = 1;i <= m; ++i){int ql = q[i].l,qr = q[i].r;while(ql < l) mov1(l-1),l--;while(ql > l) mov2(l),l++;while(qr > r) mov1(r+1),r++;while(qr < r) mov2(r),r--;ans[q[i].id] = answer;}for(int i = 1;i <= m; ++i) printf("%d\n",ans[i]);return 0;
}
/*
5 5
2 1 0 2 1
3 3
2 3
2 4
1 2
3 5
*/
View Code

轉載于:https://www.cnblogs.com/ve-2021/p/10900503.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448776.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

postman 無法正常返回結果 Could not get any response

在瀏覽器輸入地址可以返回結果&#xff0c;但是由于返回的json沒有格式&#xff0c;看起來比較麻煩&#xff0c;用postman卻報錯Could not get any response。 可以注意到下面寫了可能的情況&#xff1a;比如服務器無響應&#xff08;由于瀏覽器可以訪問&#xff0c;所以排除…

在Windows 下使用OpenCL

目前&#xff0c;NVIDIA和AMD的Windows driver均有支援OpenCL&#xff08;NVIDIA的正式版driver是從195.62版開始&#xff0c;而AMD則是從9.11版開始&#xff09;。NVIDIA的正式版driver中包含OpenCL.dll&#xff0c;因此可以直接使用。AMD到目前為止&#xff0c;則仍需要安裝其…

Java中方法重載

方法重載&#xff1a;指在同一個類中&#xff0c;允許存在一個以上的同名方法&#xff0c;只要它們的參數列表不同即可&#xff0c;與修飾符和返回值類型無關。參數列表&#xff1a;個數不同&#xff0c;數據類型不同&#xff0c;順序不同。重載方法調用&#xff1a;JVM通過方法…

swift -自定義返回圖片,替換系統圖片backItem

隱藏系統返回按鍵 方法1&#xff1a;self.navigationItem.leftBarButtonItem nil //隱藏自定義的itemself.navigationItem.hidesBackButton true //隱藏系統的item方法2&#xff1a;let item UIBarButtonItem(image: nil, style: UIBarButtonItem.Style.plain, target: …

云服務器主機內網 ip 和外網 ip 的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 服務器公網ip   可以用于域名解析ip&#xff0c;服務器遠程登錄ip&#xff0c;是最主要的服務器ip地址。    內網ip   不能用于域…

[Swift]快速反向平方根 | Fast inverse square root

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

適用于ATI卡的GPU計算MD5的小程序源碼,基于AMD APP SDK開發

以下代碼在win7 home basic , ati hd 5450平臺測試通過&#xff0c;處理速度為每秒100萬次。 程序很簡單&#xff0c;只有一個main.cpp程序。Device端只有一個md5.cl文件。 下面我把代碼貼出來&#xff0c;因為不能上傳附件&#xff0c;我把完整工程包放到了242337476的群共享里…

【CentOS 7筆記11】,目錄權限,所有者與所有組,隱藏權限#171022

2019獨角獸企業重金招聘Python工程師標準>>> shallow丿ove 一. 文件或目錄權限change mode r4&#xff0c;w2&#xff0c;x1 selinux開啟則權限后面會有個. 更改SElinux配置文件&#xff0c;將永久關閉SElinux [rootlocalhost ~]# vi /etc/selinux/config #將默認…

python字符編碼與轉碼

詳細文章: http://www.cnblogs.com/yuanchenqi/articles/5956943.html http://www.diveintopython3.net/strings.html 需知: 1.在python2默認編碼是ASCII, python3里默認是unicode 2.unicode 分為 utf-32(占4個字節),utf-16(占兩個字節)&#xff0c;utf-8(占1-4個字節)&#xf…

IntelliJ IDEA 詳細圖解最常用的配置

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 剛剛使用IntelliJ IDEA 編輯器的時候&#xff0c;會有很多設置&#xff0c;會方便以后的開發&#xff0c;磨刀不誤砍柴工。 比如&#x…

OpenCL快速入門教程

OpenCL快速入門教程 原文地址&#xff1a;http://opencl.codeplex.com/wikipage?titleOpenCL%20Tutorials%20-%201 翻譯日期&#xff1a;2012年6月4日星期一 這是第一篇真正的OpenCL教程。這篇文章不會從GPU結構的技術概念和性能指標入手。我們將會從OpenCL的基礎API開始&…

Git使用教程-idea系列中git使用教程

一、新建項目 新建項目后記得復制git倉庫的地址。 二、上傳項目到git倉庫 在你的idea里新建git倉庫&#xff0c;這是新建本地倉庫&#xff0c;等會會同步到線上git倉庫 新建后如果代碼不是文件名不是綠色的表示沒有加入到git索引中 將需要上傳的文件按照下圖方式add 添加后&…

分布式開放 消息系統 (RocketMQ) 的原理與實踐

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 分布式消息系統作為實現分布式系統可擴展、可伸縮性的關鍵組件&#xff0c;需要具有高吞吐量、高可用等特點。而談到消息系統的設計&…

日本企業RPA導入風險分析和解決對策

日本企業RPA導入風險分析和解決對策 文/馬磊 【UiBot東京特約觀察 第三期】 RPA作為一種能將定型業務完全自動化的技術&#xff0c;在老齡化、少子化和勞動力不足的日本備受矚目。上一期我們談到了關于日本工作方式改革法案的實施以及RPA導入后帶來的積極影響。但是任何事物都會…

使用 OpenCL.Net 進行 C# GPU 并行編程

在 初探 C# GPU 通用計算技術 中&#xff0c;我使用 Accelerator 編寫了一個簡單的 GPU 計算程序。也簡單看了一些 Brahma 的代碼&#xff0c;從它的 SVN 最新代碼看&#xff0c;Brahma 要轉移到使用 OpenCL.Net 作為底層了&#xff0c;于是也去網上搜索了一下&#xff0c;發現…

模擬真實環境之內網漫游

0x00 前言 目標ip&#xff1a;192.168.31.55&#xff08;模擬外網&#xff09; 目的&#xff1a;通過一個站點滲透至內網&#xff0c;發現并控制內網全部主機 0x01 信息收集 用nmap進行端口探測 瀏覽站點時查看元素發現該站點是DotNetCMS v2.0 該版本cms存在SQL注入漏洞&#x…

iOS開發之普通網絡異步請求與文件下載方法

先來說說普通異步下載方法&#xff0c;分為POST、GET兩種 /** GET請求獲取數據*/(void)getDataWithUrl:(NSString *)strUrl finishBlock:(ECGNCNSDictionaryAndNSErrorBlock)finishBlock {if (strUrl.length 0) {return;}NSURL *url [NSURL URLWithString:strUrl];NSMutableU…

超簡單:解析 yml 類型(application.yml)配置文件 、springboot 工程讀取 yml 文件中的值

方法三是我覺得最簡單的。 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 工程結構&#xff1a; 2. 我要讀取 application.yml 中屬性 &#xff1a;spring.rocketmq.namesrvAddr …

初探 C# GPU 通用計算技術

GPU 的并行計算能力高于 CPU&#xff0c;所以最近也有很多利用 GPU 的項目出現在我們的視野中&#xff0c;在 InfoQ 上看到這篇介紹 Accelerator-V2 的文章&#xff0c;它是微軟研究院的研究項目&#xff0c;需要注冊后才能下載&#xff0c;感覺作為我接觸 GPU 通用運算的第一…

d3代碼如何改造成update結構(恰當處理enter和exit)

d3的enter和exit 網上有很多blog講解。說的還湊合的見&#xff1a;https://blog.csdn.net/nicolecc/article/details/50786661 如何把自己的rude繪圖代碼&#xff0c;進行精致化&#xff08;update&#xff09; 不多比比&#xff0c;上代碼示例&#xff1a; d3.selectAll(.circ…