2020牛客寒假演算法基礎集訓營2

2022-07-10 10:15:15 字數 3061 閱讀 4397

a.做遊戲

#include "bits/stdc++.h"

using namespace std;

typedef long long ll;

ll a,b,c,x,y,z;

int main()

cout分析:\(dp(i,j)\)代表前i道題做對j道的概率,顯然我們可以得到\(dp(i,j)=dp(i-1,j-1) \times p_i+dp(i-1,j) \times (1-p_i)\)

#include "bits/stdc++.h"

using namespace std;

const int maxn=2000+10;

typedef long long ll;

const ll mod=1e9+7;

int n;

ll p[maxn],dp[maxn][maxn];

int main()

}for(int i=0;i<=n;i++) printf("%lld ",dp[n][i]);

printf("\n");

return 0;

}

d.數三角

分析:首先三點不共線,然後\(a^2+b^2

#include "bits/stdc++.h"

using namespace std;

const int maxn=500+10;

const double eps=1e-9;

int n;

struct nodep[maxn];

double dp[maxn][maxn];

double v[5];

void init()

}int main()

init();

int cnt=0;

for(int i=1;i<=n;i++)=k\),所以只需要\(i \times j\)為完全平方數,所以就是統計不超過n的所有完全平方數的所有因子數

#include "bits/stdc++.h"

using namespace std;

typedef long long ll;

ll n;

int main()}}

printf("%lld\n",cnt);

return 0;

}

f.拿物品

分析:牛牛選取乙個增加\(a_i\),相當於牛可樂消耗乙個,失去\(b_i\),所以我們按照\(a_i+b_i\)進行貪心即可

#include "bits/stdc++.h"

using namespace std;

const int maxn=2e5+100;

int n;

struct nodep[maxn];

bool cmp(node x,node y)

int main()

sort(p+1,p+1+n,cmp);

for(int i=1;i<=n;i++)

printf("\n");

for(int i=1;i<=n;i++)

printf("\n");

return 0;

}

g.判正誤

#includeusing namespace std;

typedef long long ll;

const ll mod=1e9+8;

int t;

ll a,b,c,d,e,f,g;

ll quickmod(ll x,ll y)

return res;

}int main()

i.建通道

分析:首先對點去重,得到去重之後的點數m。我們列舉最低位k,使得在其中存在\(v_i\)使得該位為0,存在\(v_j\)使得該位為1。然後讓所有為0的跟\(v_j\)連,讓所有為1的跟\(v_i\)連

#include "bits/stdc++.h"

using namespace std;

int n;

int main()

int v=v0^v1;

int ans=0;

for(int i=0;i<=30;i++)^r k_i+ \sum_^rb_i \prod_^r k_j\)。於是我們可以把區間\([l,r]\)分成兩段\([l,r_1][r_1+1,r]\)。於是令

\(\prod_^k_i=m_1,\prod_^rk_i=m_2\),$ \sum_^b_i \prod_^ k_j=n_1, \sum_^rb_i \prod_^r k_j=n_2$

所以\(m_1 \times m_2+ n_1 \times m_2+n_2\)

#include "bits/stdc++.h"

using namespace std;

typedef long long ll;

const int maxn=2e5+10;

const ll mod=1e9+7;

int n,m;

ll b[maxn],k[maxn];

struct nodetree[maxn<<2];

void pushup(int rt)

void build(int l,int r,int rt)

int mid=(l+r)>>1;

build(l,mid,rt<<1);

build(mid+1,r,rt<<1|1);

pushup(rt);

}void update(int id,int rt,ll k1,ll b1)

int mid=(tree[rt].l+tree[rt].r)>>1;

if(id<=mid) update(id,rt<<1,k1,b1);

else update(id,rt<<1|1,k1,b1);

pushup(rt);

}pairquery(int l,int r,int rt)

int main()

else

}return 0;

}

2020牛客寒假演算法基礎集訓營

長期更新,補完為止 2 g 判正誤 題意 t組資料。判斷a d b e c f是否等於g。1e9 a,b,c,g 1e9,0 d,e,f 1e9。保證不會出現指數和底數同為 0 的情況。思路 硬算會tle或mle。快速冪取模,為了增加過題概率,多取幾個模數判斷。includeusing namesp...

2020牛客寒假演算法基礎集訓營1

找規律,推公式 三角形個數為2 m n m n m 1 n 1 2 m n mn m 1 n 1 2 m n mn m 1 n 1 include include include include using namespace std typedef long long ll const int m...

2020牛客寒假演算法基礎集訓營1

h題 突然發現h題可以用好多種方法做的。方法一 雙指標,維護乙個修改次數小於等於k的區間 include using namespace std typedef long long ll const int mod 1e9 7 const int n 1e5 5 const int inf 0x3f...