新的一年,又是改不完的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...