2020牛客多校訓練賽(第二場)補題

2022-05-02 06:39:11 字數 2405 閱讀 3857

比賽入口 

題意:有乙個multiset  s,一共有三種操作:

1.  s插入乙個x;

2.  s刪除乙個x;

3.  查詢s中是否存在兩個數字,使得這兩個數字能和x組成乙個非退化三角形;

思路:顯然,s是有序的,且判斷x是否能和s中兩個數字組成非退化三角形,一共有以下三種情況:

1. x是最大邊,判斷<=x的最後兩個字;

2. x是第二大邊,判斷》=x的第乙個數字和3. x是最小邊,判斷比x大的任意兩個數字的差值的絕對值小於x,由於s可視作有序,那麼最優的方法就是從相鄰的數字中找。

這裡可以用權值線段樹來維護差值(下乙個數字 - 當前數字),由於x∈[1,1e9] ,因此可以採取離線+離散化的做法。每次查詢最小的差值即可。

1 #include2/*3

#include

4#include

5#include

6#include

7#include

8#include

9#include

10#include

11#include

12*/

13#pragma gcc optimize(2)

14using

namespace

std;

15 typedef long

long

ll;16 typedef unsigned long

long

ull;

17 typedef pairpii;

18 typedef pairpll;

19 typedef pairpdd;

20const

int n=2e6+5;21

const

int m=1e4+5;22

const

int inf=2e9+5;23

const ll mod=1e9+7;24

const

double eps=1e-5;25

const

long

double pi=acos(-1.0l

);26

#define ls (i<<1)

27#define rs (i<<1|1)

28#define fi first

29#define se second

30#define pb push_back

31#define mk make_pair

32#define mem(a,b) memset(a,b,sizeof(a))

33ll read()

3439

return x*t;40}

41 multiset s;//

權值線段樹維護下乙個數字和當前數字的差值

42int c[n<<2

],t[n],op[n],a[n],cnt[n],q,len;

43 inline int getid(int

x)44

47void build(int i,int l,int

r)48

55void update(int i,int l,int r,int pos,int

x)56

62int mid=l+r>>1;63

if(pos<=mid) update(ls,l,mid,pos,x);

64else update(rs,mid+1

,r,pos,x);

65 c[i]=min(c[ls],c[rs]);66}

6768

int query(int i,int l,int r,int ll,int

rr)69

76int

main()

77102

else

if(cnt[x]==2) update(1,1,len,x,0);//

同一種數字有兩個

103}

104else

if(op[i]==2

)105

119}

120else

121133

}134

return0;

135}

136/*

1372

1381 1000000000

1393 1000000001

140141

6142

1 2143

1 2144

2 2145

3 3146

1 4147

3 5148

1497

1501 3

1511 2

1521 100

1533 99

1543 1

1551 100

1563 1

157*/

h

牛客網暑期多校訓練賽第二場 I題 (思維)

題意 在n n的格點上放置汽車,汽車只能放置在一條邊上,汽車要駛到另一條邊。規定兩汽車相撞會損壞或者兩個汽車在同一直線的駛向方向相同是不允許的。並且格點上會有m個障礙物,障礙物是提前放好的。問他最多能擺放多少輛汽車?思路 經過一些嘗試可以發現n為奇數和偶數的汽車放置都是有規律的。如圖 按照這樣的構造...

2020牛客暑期多校訓練營(第二場) A

時間限制 c c 3秒,其他語言6秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 given n strings s 1,s 2,cdots,s ns1 s2 sn now define f s,t as the maximum i t...

2020牛客暑期多校訓練營(第二場

b.boundary 數學 以乙個點為基礎,暴力列舉另外乙個點就可以,就是算圓心的時候有點廢手。ac include inline long long read while c 0 c 9 return x s using namespace std define newnode treenode ...