阅读 33

Node.js+Koa2框架生态实战 - 从零模拟新浪微博

download:Node.js+Koa2框架生态实战 - 从零模拟新浪微博

课程为纯实战项目,从零模拟开发一个基本功能完备的微博系统(包括注册、登录、关注和取关,微博浏览、创建和回复,及 @ 关注人等各个功能),带你完成整个Koa2框架生态的综合技术实战,包括各类中间件,MySQL数据库设计,微博项目架构等诸多干货内容,最后带你回顾整个开发过程,从技术层面总结 Node.js 的最佳实践经验

适合人群
有 Node.js 基础,但想继续提升能力的同学

技术储备要求
掌握Node.js基础
熟悉 es6 语法
了解 Koa2或 Express 框架
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=3e5+5;
int n,a[N];
int cnt=1,flag,res=0;
signed main(){
cin>>n;if(n==1) return printf("0\n"),0;
for(int i=1;i<=n;++i) scanf("%lld",&a[i]);
n=unique(a+1,a+1+n)-a-1,flag=a[2]-a[1];
for(int i=2;i<n;++i) cnt+=((a[i]-a[i-1])*(a[i]-a[i+1])>0);
// printf("%d\n",cnt);
for(;cnt>1;cnt>>=1,res++) if(cnt&1) cnt++,flag=0;
return printf("%lld\n",res+(flag<0)),0;
}
Problem B
妳發現兩種操作完整等價於删掉兩數中的 (\max) 或 (\min) ,然後妳就能夠變成删除一個數,最後留下的數時 (1) 即可,然後隨意計數一下就能夠了。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+5;
const int MOD=998244353;
int n,a[N],res=0;
int fac[N],ifac[N],ksm[N<<1];
int qpow(int x,int k){
int res=1;
for(;k;k>>=1,x=x

x%MOD)
if(k&1) res=res

x%MOD;
return res;
}
int cal(int n,int m){
return fac[n+m]

ifac[n]%MOD

ifac[m]%MOD;
}
int f(int n,int m){
return cal(n,m)

ksm[n<<1]%MOD

ksm[m<<1]%MOD;
}
signed main(){
cin>>n,fac[0]=ifac[0]=ksm[0]=1;
for(int i=1;i<=n;++i) fac[i]=fac[i-1]

i%MOD;
for(int i=1;i<=n;++i) ifac[i]=qpow(fac[i],MOD-2);
for(int i=2;i<=(n<<1);i+=2) ksm[i]=ksm[i-2]

(i-1)%MOD;
for(int i=1;i<=n;++i) scanf("%lld",&a[i]);
for(int i=1;i<=n;++i) if(a[i]) res+=f(i-1,n-i),res%=MOD;
return printf("%lld\n",res),0;
}
Problem C
這道標題發現 (a_i\le 100) ,這意味著我們能夠枚舉 (A) 的子集(當然不是直接枚舉了),覺得要從這里動手。

我們思索問的信息。我們需求晓得的是在 (a) 全部選完的狀況下並且以 (a) 結尾的概率是幾。發現枚舉 (A) 的子集仿佛沒有什麼用?

我們能否能夠嘗試求出選取出每一個 (A) 的子集同時結尾爲 (a) 的概率,這樣的話我們就能夠經過隨意選 (A) 且以 (a) 結尾的概率來相減得到了。

我們先思索後者如何計算,就是钦定一個 (a) 作爲結尾,然後剩下隨機選取前面的概率乘上再選择這個位置的概率。

我們發現,關於一個 (b_i) ,我們能夠比擬隨便的求出他關於一個匯合時,先選於這個匯合的概率:

[P(b_i,S)=\frac{b_i}{bi+\sum{i\in S}a_i} ]

然後,我們需求求出的是關於每一個 (b_i) ,他後選於全集 (A) 的概率 (p

i) ,那麼最後的答案就是 (n+m-\sum

{i=1}^m p_i)

我們思索怎樣求。由於我們能夠求出關於每一個匯合的概率,我們就能夠用總概率減去每一個子集的概率乘上容斥係數就能夠求出後選的概率了。

然後就好了。

代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=105;
const int MOD=998244353;
int n,m,a[N],b[N];
int f[N

N],res=0;
int ksm(int x,int k){
int res=1;
for(;k;k>>=1,x=x

x%MOD)
if(k&1) res=res

x%MOD;
return res;
}
signed main(){
cin>>n>>m,res=n+m;
for(int i=1;i<=n;++i) scanf("%lld",&a[i]);
for(int i=1;i<=m;++i) scanf("%lld",&b[i]);
f[0]=1;
for(int i=1;i<=n;++i){
for(int j=N

N-1;j>=a[i];--j)
f[j]+=MOD-f[j-a[i]],f[j]%=MOD;
}
for(int i=1;i<=m;++i){
for(int j=0;j<N

N;++j)
res+=MOD-f[j]

b[i]%MOD*ks

文章分类
代码人生
文章标签