Codeforces1198B 思維 離線

2021-09-26 06:53:39 字數 1278 閱讀 1655

題意:題意:給定n個數字,q次操作,操作分為兩種(且稱之為1類操作和2類操作),1 p x為把a[p]改為x, 2 x為把陣列中所有小於x的數字全部改為x.

方法:對詢問進行離線操作,即將詢問陣列先存起來,再從後向前依次處理每次詢問,如果是1類詢問且為第一次遇到的點則將其更新為max(此次的x值,之後的2類操作的x的最大值),並對其進行標記,之後不再訪問,如果是2類詢問,則將maxnum(最大的2類x值)進行更新maxnum=max(maxnum,x[i])(小的對大的無影響)。最後對原資料陣列a進行遍歷,對未訪問的點進行更新,將其賦值為max(maxnum,a[i])。

ac**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define scan

(n)scanf

("%d"

,&n)

#define ll long

long

int v[

200005];

int a[

200005];

int b[

200005];

int p[

200005];

int x[

200005];

intmain()

int maxnum=-1

;memset

(v,0

,sizeof

(v))

;for

(i=q;i>

0;i--

)else

if(b[i]==2

)}for(i=

1;i<=n;i++)if

(v[i]==0

) a[i]

=max

(maxnum,a[i]);

printf

("%d"

,a[1])

;for

(i=2

;i<=n;i++

)printf

(" %d"

,a[i]);

printf

("\n");

return0;

}

CODEFORCES 535B 解題報告

仍然是水題,但是還是有可以說的地方。主要思路就是dfs可重排列。4,7組成的幸運數字,在n位數字的構造方式有2 n種,而資料是最多9位,則列舉只有512種,n 2的複雜度足矣。只列舉相應位數的4 7排列,前面的個數用2 n累加。只要遵循先選4再選7即可構造字典順序,然後查詢相應數。以下是 可直接ac...

CodeForces 816B(區間計數)

codeforces 816b 題意 給出n個區間和乙個k值,再給出q次詢問,每次詢問給出乙個區間,要求這個區間中的數在開始的n區間中出現次數不少於k次的數目。解法 將n個區間的每個數每出現一次就加一,最後統計q詢問的區間中不小於k的數的個數。寫這題主要是想講乙個常用的區間更新的方法,其實這題也可以...

Codeforces 965B 題解報告

當k 1時,取第乙個 的座標即可 當k 1時,需要求出每乙個點在上下左右四個方向所能到達的最遠處,記為up,down,left,right,再取上下方向和左右方向的和的最大值,即 max 0,up down k max 0,left right k n,k map int,input split a...