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...