補題 牛客2019跨年AK場

2021-10-01 20:38:56 字數 4305 閱讀 3793

新的一年,又是改不完的bug和補不完的題,qaq

b 【客】希望

做法:題意是在某個範圍中使[l,r]區間數字變為0需要c[i]點能量,要問在k點能量的限制下,總和最大為多少。

大佬說用線段樹加01揹包,然而後來還是想錯了,開始我在v陣列上建了一棵線段樹,後來發現在做01揹包的時候會有重複,其實正解是在w陣列上建線段樹,後面再對兩個陣列進行01揹包。

還有乙個小技巧,最後要減的是最小的權值,所以取負號取最大,輸出答案時dp[k]變號即可。

**

#include

#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define lson rt<<1, l, mid

#define rson rt<<1|1, mid+1, r

using

namespace std;

typedef

long

long ll;

typedef pairint> pli;

typedef pair<

int,

int> pii;

typedef pair pll;

typedef map<

char

,int

> mci;

typedef mapint> msi;

template

<

class

t>

void

read

(t &res)

while

(c >=

'0'&& c <=

'9')

res *

= f;

}const

int n =

1e5+5;

ll t[

4*n]

;void

update

(int rt,

int l,

int r,

int l,

int r, ll x)

int mid = l + r >>1;

update

(lson, l, r, x)

;update

(rson, l, r, x);}

ll query

(int rt,

int l,

int r,

int pos)

ll v[n]

;ll dp[

510]

, sum;

intmain()

int l, r;

ll c;

for(

int i =

1; i <= m;

++i)

ll w;

for(

int i =

1; i <= n;

++i)

}printf

("%lld\n"

, sum + dp[k]);

return0;

}

d 【祝】rinne loves study

做法:二維陣列用一維陣列表示行和列,後面再輸出行和列出現時間之間的最大值。

**

#include

#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define lson rt<<1, l, mid

#define rson rt<<1|1, mid+1, r

using

namespace std;

typedef

long

long ll;

typedef pairint> pli;

typedef pair<

int,

int> pii;

typedef pair pll;

typedef map<

char

,int

> mci;

typedef mapint> msi;

template

<

class

t>

void

read

(t &res)

while

(c >=

'0'&& c <=

'9')

res *

= f;

}const

int n =

1e5+5;

int row[n]

, col[n]

;//表示二維陣列的行和列陣列

intmain()

for(

int i =

1; i <= n;

++i)

puts(""

);}return0;

}

f 【家】神秘鑰匙

做法:用找規律的方法

2 :(1),(2) --> 12種

(1,2) --> 2種

3:(1),(2),(3) --> 13種

(1,2),(1,3),(2,3) --> 2*2種

(1,2,3) --> 3種易得cn1

+2∗c

n2+3

∗cn3

+...

+n∗c

nn=n

∗2n−

1c_n^1 + 2 * c_n^2 + 3 * c_n^3 + ... + n * c_n^n = n * 2 ^

cn1​+2

∗cn2

​+3∗

cn3​

+...

+n∗c

nn​=

n∗2n

−1**

#include

using

namespace std;

typedef

long

long ll;

const ll mod =

1e9+7;

ll ksm

(ll a, ll n)

return sum;

}int main (

)

g 【跨】小sun的假期

做法:對端點進行貪心判斷,欸,最後還是找不到bug看了大佬的**…

**

#include

#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define lson rt<<1, l, mid

#define rson rt<<1|1, mid+1, r

using

namespace std;

typedef

long

long ll;

typedef pairint> pli;

typedef pair<

int,

int> pii;

typedef pair pll;

typedef map<

char

,int

> mci;

typedef mapint> msi;

template

<

class

t>

void

read

(t &res)

while

(c >=

'0'&& c <=

'9')

res *

= f;

}const

int n =

1e5+5;

struct xx

}ap[n]

;int

main()

sort

(ap+

1, ap+m+1)

;int ans =

0, l =

0, r =0;

for(

int i =

1; i <= m;

++i)

}printf

("%d\n"

,max

(ans, n-r));

return0;

}

2019牛客多校第四場A K

a.給你一張n個點n 1條邊的圖,和k個關鍵點。求乙個點到所有關鍵點距離最大值的最小為多少。乍一看像是對答案二分,但是考慮兩個相距最遠的關鍵點,假設他們的距離為d,那麼答案肯定為 d 1 2 如果有一點到中心點的距離超過了 d 1 2 那麼這個點會成為最遠關鍵點對中的乙個。矛盾。所以題目就變成了如何...

2023年牛客跨年場有獎賽

2020年即將過去,這一年我們經歷了很多。從下半年的ccpc網路賽開始,前前後後進行了很多場活動和比賽。這一年ncwuacm和各位一同成長,不斷進步,不斷突破。對於即將到來的2021年,ncwuacm將會與大家繼續努力。2020ncwuac 2020年主要比賽與活動 9月24日 ccpc網路選拔賽 ...

2019牛客多校訓練營第三場補題

b題 crazy binary string 把0看成 1,字首和,pos 0 n 0 include using namespace std const int maxn 1e5 3 int a maxn int pos maxn 1 string s int main for int i 0 i...