NOIP2017模擬 洛谷3939 數顏色

2021-08-10 06:41:40 字數 2561 閱讀 5840

題目背景

洛谷 mnoip 模擬賽 day1

洛谷3939

題目描述

小 c 的兔子不是雪白的,而是五彩繽紛的。每只兔子都有一種顏色,不同的兔子可能有 相同的顏色。小 c 把她標號從 1 到 nn 的 nn 只兔子排成長長的一排,來給他們喂胡蘿蔔吃。 排列完成後,第 ii 只兔子的顏色是ai

。俗話說得好,「蘿蔔青菜,各有所愛」。小 c 發現,不同顏色的兔子可能有對胡蘿蔔的 不同偏好。比如,銀色的兔子最喜歡吃金色的胡蘿蔔,金色的兔子更喜歡吃胡蘿蔔葉子,而 綠色的兔子卻喜歡吃酸一點的胡蘿蔔……為了滿足兔子們的要求,小 c 十分苦惱。所以,為 了使得胡蘿蔔喂得更加準確,小 c 想知道在區間 [lj

,rj ]裡有多少只顏色為cj

的兔子。

不過,因為小 c 的兔子們都十分地活躍,它們不是很願意待在乙個固定的位置;與此同 時,小 c 也在根據她知道的資訊來給兔子們調整位置。所以,有時編號為xj

和xj+

1 的兩 只兔子會交換位置。 小 c 被這一系列麻煩事給難住了。你能幫幫她嗎?

輸入格式

從標準輸入中讀入資料。 輸入第 1 行兩個正整數

n ,m。

輸入第 2 行

n 個正整數,第

i個數表示第i只兔子的顏色ai

。輸入接下來 mm 行,每行為以下兩種中的一種:

輸出格式

輸出到標準輸出中。

對於每個 1 操作,輸出一行乙個正整數,表示你對於這個詢問的答案。

樣例資料

輸入

6 5

1 2 3 2 3 3

1 1 3 2

1 4 6 3

2 3

1 1 3 2

1 4 6 3

輸出

1

2 2

3

備註【樣例 1 說明】

前兩個 1 操作和後兩個 1 操作對應相同;在第三次的 2 操作後,3 號兔子和 4 號兔子

交換了位置,序列變為 1 2 2 3 3 3。

【資料範圍與約定】

子任務會給出部分測試資料的特點。如果你在解決題目中遇到了困難,可以嘗試只解 決一部分測試資料。 對於所有測試點,有 1<=lj

<=

n ,1<=xj

<

n 。每個測試點的資料規模及特點如下表:

特殊性質 1:保證對於所有操作 1,有 |rj

-lj |≤20或 |rj

-lj |>=n-20。

特殊性質 2:保證不會有兩隻相同顏色的兔子。

分析:這道題最大的問題就是空間,我們想要存下每種顏色在原序列中在哪些位置,顯然二維陣列是絕對mle的,所以想到用vector動態開記憶體,需要再加,優化掉了二維陣列裡無用的記憶體,相當於只用了maxn個儲存位置。對於交換就在vector裡二分找到原位置更新成現在的位置(注意判斷互換的顏色是否相同,相同的就不換,不然互換之後就陣列不滿足位置的單調性了,我會說我忘了判斷嗎)。對於查尋也就是二分找到左邊界和右邊界,用陣列編號相減即可得到答案。

**

#include
#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int getint()

for(;isdigit(ch);ch=getchar())

sum=(sum<<3)+(sum<<1)+ch-48;

return sum*f;

}const

int maxn=300010;

int n,m,ord;

int a[maxn];

vector

c[maxn];

int erfen1(int x,int colr)

return ans;

}int erfen2(int x,int colr)

return ans;

}void erfen(int x,int colr,int bz)

}if(bz==1)

c[colr][ans]=x+1;

else

c[colr][ans]=x-1;

}int main()

while(m--)

if(ord==2)

}return

0;}本題結。

NOIP2017 洛谷 逛公園

初見安 這個本狸咕了4個月的題終於寫出來了qaq!這裡是傳送門 洛谷p3953 逛公園 策策每天都會去逛公園,他總是從1號點進去,從nn號點出來。策策喜歡新鮮的事物,它不希望有兩天逛公園的路線完全一樣,同時策策還是乙個 特別熱愛學習的好孩子,它不希望每天在逛公園這件事上花費太多的時間。如果1號點 到...

NOIP2017模擬 鴨舌

題目 小美喜歡吃鴨舌。有乙個 n 個點的樹,每個節點 i 第 i 個點上有 ai 個鴨舌。小美一開始處於 x 號點。每次小美可以選擇乙個與現在的點有邊的點而且那個點還有鴨舌,那麼小美會走到那個點並吃乙個鴨舌。要保證小美最後還是走到 x 號點。問小美最多能吃幾個鴨舌?輸入格式 輸入第一行乙個整數 n ...

NOIP2017模擬 區間

2017.11.3 t1 2032 樣例資料 輸入3 2 1 2 1 1 2 4 5輸出 2 6分析 這道題為什麼要放在t1 考得我懷疑人生。本來也只會暴力找,對於30 的資料我是這樣的 先離散化,再二維陣列記錄所有顏色的在每個位置的字首和,然後四層迴圈暴力查詢。而正解是 先離散化,再把每種顏色的每...