[HEOI2012]采花

題目描述

蕭薰兒是古國的公主,平時的一大愛好是采花。

今天天氣晴朗,陽光明媚,公主清晨便去了皇宮中新建的花園采花。

花園足夠大,容納了n朵花,花有c種顏色(用整數1-c表示),且花是排成一排的,以便于公主采花。公主每次采花后會統計采到的花的顏色數,顏色數越多她會越高興!同時,她有一癖好,她不允許最后自己采到的花中,某一顏色的花只有一朵。為此,公主每采一朵花,要么此前已采到此顏色的花,要么有相當正確的直覺告訴她,她必能再次采到此顏色的花。

由于時間關系,公主只能走過花園連續的一段進行采花,便讓女仆福涵潔安排行程。福涵潔綜合各種因素擬定了m個行程,然后一一向你詢問公主能采到多少朵花(她知道你是編程高手,定能快速給出答案!),最后會選擇令公主最高興的行程(為了拿到更多獎金!)。

說明

n,m,c2?10^6

題解:

一句話題意:求詢問區間內出現次數大于1的數有多少個。

直接處理不現實。可以離線。

詢問按照左端點排序。

可以類比HH的項鏈、

預處理每個點nxt[i],表示i位置相同顏色的下一個位置。

?

樹狀數組每個點(點的值是c)為1的含義是,這個點在當前詢問區間左端點為L的時候,是從L開始的第二個出現的這個數c

開始把所有顏色第二次出現的位置+1

那么對于所有的詢問左端點為L的詢問,直接query(r)-query(l-1)即可。

可以理解,第三次及以上出現的不算重,一次的也不會算。必須r包含第二次出現的才會統計上。

L右移的時候,把nxt[L]-=1,nxt[nxt[L]]+=1因為,nxt[L]原來是第二個,現在會變成第一個。

nxt[nxt[L]]就變成第二個了。

?

代碼:

?

#include<bits/stdc++.h>
using namespace std;
const int N=2000000+5;
int n,m,c;
int has[N],nxt[N];
int a[N];
int f[N];
void add(int x,int d){for(;x<=n;x+=x&(-x)) f[x]+=d;
}
int query(int x){int ret=0;for(;x;x-=x&(-x)) ret+=f[x];return ret;
}
struct node{int l,r;int id;bool friend operator <(node a,node b){return a.l<b.l;}
}q[N];
int ans[N];
int pos[N];
int main()
{scanf("%d%d%d",&n,&c,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);has[a[i]]++;if(pos[a[i]])nxt[pos[a[i]]]=i;if(has[a[i]]==2) add(i,1);pos[a[i]]=i;}int l,r;for(int i=1;i<=m;i++){scanf("%d%d",&q[i].l,&q[i].r);q[i].id=i;}sort(q+1,q+m+1);int L=1;for(int i=1;i<=m;i++){while(L<q[i].l){if(nxt[L]) add(nxt[L],-1);if(nxt[nxt[L]]) add(nxt[nxt[L]],1);L++;}ans[q[i].id]=query(q[i].r)-query(q[i].l-1);}for(int i=1;i<=m;i++){printf("%d\n",ans[i]);}return 0;
}

?

總結:
對于離線區間詢問的情況——BY LYD:

1.cdq分治(對于前一半對后一半的影響)

2.整體二分(對于答案)

3.區間排序(對于處理答案先后順序,便于區間之間轉化的時候降低復雜度(經典的有如莫隊))

轉載于:https://www.cnblogs.com/Miracevin/p/9676591.html

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

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

相關文章

修改SQL server數據庫中的邏輯文件名

使用 FILE_NAME 函數可以返回給定文件標識 (ID) 號的邏輯文件名如下 下例返回 file_ID 為 1 的文件名&#xff08;master 數據庫文件&#xff09;。 1USEmaster2SELECTFILE_NAME(1)當我們進行從一個備份中還原數據庫時&#xff0c;數據庫的邏輯文件名是不會改變的。 可用 ALTER…

java根據模板生成PDF

首先你的制作一個pdf模板&#xff1a; 1.先用word做出模板界面 畫單元格的時候需要考慮值的長度&#xff0c;像這里的狀態可能會很長 2.文件另存為pdf格式文件 使用福昕PDF 打開&#xff0c;添加文本&#xff0c;以及需要添加值的地方&#xff0c;設置文本域&#xff0c;這個就…

android bilibili搜索框,仿bilibili搜索框效果(三句代碼實現)

SearchDialog仿bilibili搜索框效果(只需要三句話即可實現)先看預覽圖(轉換后有一點點失真):前言1,支持搜索歷史(已經做了數據庫存儲了)2,基本與bilibili的搜索效果差不多了3,需要修改更多內容可以下載library自己修改4,本人非大牛,有不妥之處請Issues指出,謝謝5,參考了該po的文…

元璟資本陳洪亮解析人貨場融合 消費者變成“合作者”

一年一度的云棲大會是新科技大放異彩的舞臺&#xff0c;而創業者們同樣聚集于此&#xff0c;探討前沿的商業模式。 在今日舉行的“云棲大會 - 阿里云創新中心年度盛典”上&#xff0c;元璟資本合伙人陳洪亮發表演講&#xff0c;他從新消費和新零售的諸多創新現象出發&#xff0…

通用數據庫顯示程序

數據庫顯示程序,能調任意庫,任意字段,多關鍵字搜索,自動分頁. 阿余經常寫一些數據庫相關的程序,當然離不開顯示庫中的數據了,說實話,做這樣的程序真是無聊啊,所以,阿余就想寫個函數,一個通用的數據庫顯示函數.要求如下: 1. 能顯示指定的字段,當然,字段名和顯示的文字可以不一樣…

2019.8.13 sdfzoier

lxy: lixf acwing上的118,126 zhangtingyu zhaosirui wujialin 轉載于:https://www.cnblogs.com/caterpillor/p/11186047.html

鴻蒙 電視盒子,目前最強的電視盒子:性價比最高的5款電視盒子

電視盒子作為目前人們滿足精神生活的一個電子產品&#xff0c;產品的質量自然是要有很高的保證&#xff0c;并且要有較好的使用體驗&#xff0c;在產品價格上也要讓消費者感到實惠&#xff0c;以上這些要求也是我們所說的性價比&#xff0c;性價比最高的盒子&#xff0c;也足以…

CDH-5.7.0:基于Parcels方式離線安裝配置

http://shiyanjun.cn/archives/1728.html https://www.waitig.com/cdh%E5%AE%89%E8%A3%85.html

From 7.8 To 7.14

From 7.8 To 7.14 大綱 學科 英語的話每天早上背單詞, 爭取每天做一篇完型, 一篇閱讀, 一篇短文填空, 一篇改錯, 一篇七選五??? 似乎太多了, 先試一下吧 語文的話, 嘗試翻譯一下文言文??? 理科先不管他 競賽 考試, 題解, 做題, 恩, 應該差不多吧 7.12 考試, 改題... 今天…

html郵箱地址的正則表達式,javascript寫一個校驗郵箱的正則表達式

test判斷字符串是否符合正則的要求注意注意&#xff1a;字符串有一部分符合要求&#xff0c;test就會判斷為真。這個時候我們可以加一個行首(^)行尾($)來控制分析我們根據常用郵箱寫一個中文的校驗規則如下&#xff1a;我們常用的郵箱格式&#xff1a;yancamy126.comyan233__qq…

系統需求分析文檔需要考慮的問題

最近作了幾次需求分析,有了一些經驗,特共享出來.歡迎指正.我認為在系統需求分析中,有三個問題需要注意,即系統涵蓋范圍用戶對上線時間的要求系統上線對目前系統整體的影響系統覆蓋的范圍很多用戶都想的是,這次一定要把所有遇到的問題解決完. 也就說,客戶潛在的心理是對系統較高…

洛谷 P1414 又是畢業季II (多個數的最大公因數)

這道題其實不難&#xff0c;但是我想復雜了 我想的是把每個數質因數分解&#xff0c;然后每次就枚舉每個質因數 來求最小公倍數。 然后想了想這樣復雜度將會非常的大&#xff0c;肯定超時 然后看了題解發現不需要質因數分解&#xff0c;直接存因數的個數就好了 c[i]表示i這個因…

前端之CSS

什么是CSS&#xff1f; 在標簽上設置標簽的style屬性。 編寫CSS的方法 一、直接在標簽中寫style屬性。 二、在head標簽中寫style標簽&#xff0c;這里就需要選擇器選擇所需的標簽 1、id選擇器&#xff0c;以#開頭&#xff0c;例子如下&#xff1a; <!DOCTYPE html> <h…

[asp]統計在線人數情況

[asp]統計在線人數情況 以前ASP版本的統計在線。因為是從以前的系統中提取出來的。使用的話要修改下。 IfCbool(Application("MARKONLINE")) TrueThenCheckOnline()FunctionCheckOnline() DIMIP,rsPrv,Sql IfDBSTATE FalseThenDbOpen() SetrsPrvServer.Crea…

android 局域網鄰居,局域網內無鄰居 它們去哪兒了?

最近不知道是炎炎夏日的原因&#xff0c;還是部分地區雨水過多的問題&#xff0c;造成了好多小伙伴反應說&#xff0c;無法在網絡中看到同在一個局域網中的其他電腦、服務器或打印機。這個問題說大不大&#xff0c;說小不小&#xff0c;但很難用幾句話把問題解決&#xff0c;所…

svg 線條動畫淺嘗

看了別人網站的svg動畫覺得非常舒服,自己嘗試實現一下效果如下: 實現需要明白2個關于svg的css屬性 1. stroke-dasharray stroke-dasharray: <percentage> | <length> | inherit數與數之間用逗號或者空白隔開&#xff0c;指定短劃線和缺口的長度。如stroke-dasharr…

Ajax 的亂碼問題(2)

上次說的是“發送數據”時亂碼的處理方法。那么“接收數據”呢&#xff1f;亂碼問題弄得我快瘋了&#xff0c;所以廢話也不多說了&#xff0c;總結如下&#xff1a;服務端&#xff1a;///<summary>///Ajax 格式數據到本地客戶端///</summary>///<param name&quo…

《子彈筆記術》[日]杉野干人(作者)epub+mobi+azw3格式下載

下載地址&#xff1a;點我下載后手機可瀏覽內容簡介在工作中&#xff0c;越是復雜的項目&#xff0c;需要記錄的事情越多&#xff0c;花費的時間自然也越多。如果使用傳統筆記方法&#xff0c;規劃將變成苦差事。子彈筆記術的核心是快速收集和處理信息&#xff0c;它可以幫助你…

html廣告條效果,css3炫酷網站banner廣告動畫特效

這是一款可以用來遮罩網站banner或廣告的動畫特效插件。該特效使用的是 CSS3 animations。注意不是所有的瀏覽器都支持 CSS3 animations。如果你對 CSS3 animations還不了解&#xff0c;建議你先閱讀W3C CSS Animations。HTMLhtml結構如下&#xff1a;Lost at sea?Relax - wev…

開始測試React Native App(上篇)

前期技術儲備 前言 我是測試小白&#xff0c;小小白&#xff0c;小小小白&#xff0c;最近想在成了一定規模的項目中引入測試&#xff0c;于是找了許些資料學習&#xff0c;現在已經在項目中成功引入。于是想在思路明朗和記憶深刻的時候總結下學習路徑以及寫測試中遇到的難點、…