2021春季個人賽 7 補題

2021-10-22 12:02:36 字數 1443 閱讀 6964

題意:給定n

nn個數和q

qq個詢問,每個詢問包含乙個運算元,如果運算元為1

11,那麼再輸入兩個數p,v

p,vp,

v,使a[p

]=

va[p]=v

a[p]=v

,如果運算元為2

22,輸出讓這個陣列成為0

00陣列的最小次數。

零陣列的定義:你可以讓陣列中非零的數減去某個數x

xx,視為一次操作,直到陣列全部變為0

00分析:只需要計算出陣列中有多少個非0

00的、不相同的數即可。資料範圍為1e9

1e91e

9,所以要用map

mapma

p,注意map

mapma

p不能直接用siz

e(

)size()

size()

#include

#include

using namespace std;

const int n=

1e5+5;

int t,n,q,a[n]

,op,u,v;

int main()

while

(q--

)else

if(op==2)

}}}

題意:給定n

nn個數a

aa與n

nn個數b

bb,他們不重複 ,a

aa陣列在上,b

bb陣列在下,現在從a

aa陣列的所有數去配對b

bb陣列的所有數,匹配成功(相等)則連一條線,求線段的交點個數。

分析:求逆序對數量

#include

#include

const int n=

1e5+5;

int t,n,a[n]

,b[n]

,tmp[n]

,x;long long int res;

void merge_sort

(int l,int r)

}while

(i<=mid) tmp[k++

]=a[i++];

while

(j<=r) tmp[k++

]=a[j++];

for(i=l;i<=r;i++

) a[i]

=tmp[i];}

int main()

for(int i=

1;i<=n;i++

)merge_sort(1

,n);

printf

("%lld\n"

,res);}

}

2021春季個人賽 3 補題

題意 給定3個長度為10只由01構成的字串,你可以任意移動01的位置,使得他們最後異或和最大。分析 統計3個字串的01個數。當遇到 001 和 111 的情況就輸出1,否則輸出0。每次需要排序。include.h using namespace std const int n 15 int t ch...

2023年1月30日個人賽補題報告

c題 這個題的資料開到了10 18,很明顯不能暴力。正確的做法是從1到n進行二分查詢,對於每乙個查詢的值進行暴力模擬。之前只是單純的寫過二分演算法,但並沒有在實際做題中應用過。如下 include include include include include using namespace std...

2020 8 10 個人賽補題

include include include include using namespace std char str 1010 int num 30 int main int sum 0 for int i 0 i 26 i if sum 1 大於一則直接輸出 char ch for int i...