怕不是最后一篇(雾),过滤最基础的背包DP、状压DP、递推等

树上换根DP:https://www.luogu.org/problemnew/show/P4284

#include<bits/stdc++.h>
using namespace std;
typedef long double ld;
const int N=5e5+;
int n,cnt,hd[N],v[N<<],nxt[N<<];
ld ans,p[N],f[N],g[N],w[N<<];
void add(int x,int y,ld z){v[++cnt]=y,nxt[cnt]=hd[x],w[cnt]=z,hd[x]=cnt;}
void dfs1(int u,int fa)
{
f[u]=p[u];
for(int i=hd[u];i;i=nxt[i])
if(v[i]!=fa)dfs1(v[i],u),f[u]=(f[u]+w[i]*f[v[i]]*(-f[u]));
}
void dfs2(int u,int fa,ld p)
{
g[u]=f[u]+(fabs(-p*f[u])>1e-?p*(g[fa]-p*f[u])/(-p*f[u])*(-f[u]):);
for(int i=hd[u];i;i=nxt[i])if(v[i]!=fa)dfs2(v[i],u,w[i]);
}
int main()
{
scanf("%d",&n);
for(int i=,x,y,z;i<n;i++)scanf("%d%d%d",&x,&y,&z),add(x,y,z*0.01),add(y,x,z*0.01);
for(int i=,x;i<=n;i++)scanf("%d",&x),p[i]=x*0.01;
dfs1(,),dfs2(,,);
for(int i=;i<=n;i++)ans+=g[i];
printf("%0.6Lf",ans);
}

数位DP:http://www.51nod.com/Challenge/Problem.html#!#problemId=1245

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,p,a[],f[][][];
int tot,pos;
int main()
{
int T;cin>>T;
while(T--)
{
cin>>n>>p;
tot=;
while(n)a[tot++]=n%p,n/=p;
tot--;
memset(f[pos],,sizeof f[pos]);
f[pos][][]=a[]+,f[pos][][]=p-f[pos][][];
for(int i=;i<=tot;i++)
{
pos^=;
memset(f[pos],,sizeof f[pos]);
for(int j=;j<=tot;j++)
{
f[pos][j][]+=(a[i]+)*f[pos^][j][]+a[i]*f[pos^][j][];
f[pos][j+][]+=(p-a[i]-)*f[pos^][j][]+(p-a[i])*f[pos^][j][];
}
}
while(!f[pos][tot][])tot--;
for(int i=;i<=tot;i++)printf("%lld ",f[pos][i][]);
puts("");
}
}

斜率优化DP:https://www.luogu.org/problemnew/show/P3628

#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=1e6+;
int n,a,b,c,q[maxn],qs,qe;
ll s[maxn],f[maxn];
double val(int j,int k)
{return (f[j]-f[k]+a*(s[j]*s[j]-s[k]*s[k])+b*(s[k]-s[j]))*1.0/(*a*(s[j]-s[k]));}
int main()
{
scanf("%d%d%d%d",&n,&a,&b,&c);
for(int i=;i<=n;i++)
{
int x;
scanf("%d",&x);
s[i]=s[i-]+x;
}
for(int i=;i<=n;i++)
{
while(qs<qe&&val(q[qs+],q[qs])<s[i])
qs++;
f[i]=f[q[qs]]+a*(s[i]-s[q[qs]])*(s[i]-s[q[qs]])+b*(s[i]-s[q[qs]])+c;
while(qs<qe&&val(i,q[qe])<val(q[qe],q[qe-]))
qe--;
q[++qe]=i;
}
printf("%lld",f[n]);
}

决策单调性DP(最值分治):https://www.lydsy.com/JudgeOnline/problem.php?id=2216

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+;
int n,a[N],ans[][N];
double calc(int u,int v){return sqrt(abs(v-u))+a[u];}
void solve(int l,int r,int ql,int qr,int ans[N])
{
if(l>r||ql>qr)return;
int minp=l,mid=ql+qr>>;
double mn=calc(l,mid),ret=;
for(int i=l+;i<=r&&i<=mid;i++)
{
ret=calc(i,mid);
if(mn<=ret)mn=ret,minp=i;
}
ans[mid]=max(ans[mid],int(ceil(mn))-a[mid]);
solve(l,minp,ql,mid-,ans),solve(minp,r,mid+,qr,ans);
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
solve(,n,,n,ans[]);
for(int i=;i<=n/;i++)swap(a[i],a[n-i+]);
solve(,n,,n,ans[]);
for(int i=;i<=n;i++)printf("%d\n",max(ans[][i],ans[][n-i+]));
}

四边形优化DP:http://acm.hdu.edu.cn/showproblem.php?pid=3506

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=;
int n,val[N],sum[N],f[N][N],s[N][N];
void solve()
{
for(int i=;i<=*n;i++)f[i][i]=,s[i][i]=i;
for(int len=;len<=n;len++)
for(int i=*n-len;i;i--)
{
int j=i+len-;
f[i][i+len-]=1e9;
int a=s[i][i+len-],b=s[i+][i+len-],cost=sum[i+len-]-sum[i-];
for(int k=a;k<=b;k++)
if(f[i][i+len-]>f[i][k]+f[k+][i+len-]+cost)
{
f[i][i+len-]=f[i][k]+f[k+][i+len-]+cost;
s[i][i+len-]=k;
}
}
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=;i<=n;i++)scanf("%d",&val[i]),val[i+n]=val[i];
for(int i=;i<=*n;i++)sum[i]=sum[i-]+val[i];
solve();
int ans=1e9;
for(int i=;i<=n;i++)ans=min(ans,f[i][i+n-]);
printf("%d\n",ans);
}
}

Min-Max容斥:https://loj.ac/problem/2542

#include<bits/stdc++.h>
using namespace std;
const int mod=,N=3e5;
int n,Q,s,cnt,f[N],sz[N],k[],d[],du[],hd[],v[],nxt[];
int qpow(int a,int b)
{
int ret=;
while(b)
{
if(b&)ret=1ll*ret*a%mod;
a=1ll*a*a%mod;b/=;
}
return ret;
}
void add(int x,int y){v[++cnt]=y;nxt[cnt]=hd[x];hd[x]=cnt;}
void dfs(int u,int fa,int S)
{
if(S&(<<u-)){k[u]=d[u]=;return;}
k[u]=d[u]=du[u];
for(int i=hd[u];i;i=nxt[i])
if(v[i]!=fa)
{
dfs(v[i],u,S);
k[u]=(k[u]-k[v[i]])%mod;
d[u]=(d[u]+d[v[i]])%mod;
}
k[u]=qpow(k[u],mod-);
d[u]=1ll*d[u]*k[u]%mod;
}
int main()
{
scanf("%d%d%d",&n,&Q,&s);
for(int i=,x,y;i<n;i++)scanf("%d%d",&x,&y),add(x,y),add(y,x),du[x]++,du[y]++;
for(int i=;i<(<<n);i++)
dfs(s,,i),f[i]=d[s],sz[i]=sz[i>>]+(i&);
while(Q--)
{
int k,S=;
scanf("%d",&k);
for(int i=,x;i<=k;i++)scanf("%d",&x),S|=<<x-;
int ans=;
for(int i=S;i;i=(i-)&S)
ans=(sz[i]&)?(ans+f[i])%mod:(ans-f[i])%mod;
printf("%d\n",(ans+mod)%mod);
}
}

动态DP:https://www.luogu.org/problemnew/show/P5024

#include<bits/stdc++.h>
#define lson l,mid,rt*2
#define rson mid+1,r,rt*2+1
using namespace std;
typedef long long ll;
const int N=2e6+;
struct mat{
ll f[][];
mat(){f[][]=f[][]=f[][]=f[][]=;}
friend mat operator+(mat a,mat b)
{
mat c;
for(int i=;i<;i++)
for(int j=;j<;j++)
c.f[i][j]=min(a.f[i][]+min(b.f[][j],b.f[][j]),a.f[i][]+b.f[][j]);
return c;
}
}st[N],to;
int n,m,cnt,dep[N],tid[N],bel[N],fa[N],sz[N],son[N],dfn[N],pos[N];
ll p[N],f[N],g[N],cf[N],cg[N];
bool used[N];
vector<int>G[N];
void build(int l,int r,int rt)
{
used[rt]=bel[tid[l]]==bel[tid[r]];
if(l==r)return;
int mid=(l+r)/;
build(lson);
build(rson);
}
void modify(int l,int r,int rt,int p)
{
if(l==r){st[rt]=to;return;}
int mid=(l+r)/;
if(p<=mid)modify(lson,p);
else modify(rson,p);
if(used[rt])st[rt]=st[rt*]+st[rt*+];
}
mat query(int l,int r,int rt,int L,int R)
{
if(L==l&&r==R)return st[rt];
int mid=(l+r)/;
if(R<=mid)return query(lson,L,R);
if(L>mid)return query(rson,L,R);
return query(lson,L,mid)+query(rson,mid+,R);
}
void dfs(int u)
{
sz[u]=;
dep[u]=dep[fa[u]]+;
for(int i=;i<G[u].size();i++)
if(G[u][i]!=fa[u])
{
fa[G[u][i]]=u;
dfs(G[u][i]);
sz[u]+=sz[G[u][i]];
if(sz[G[u][i]]>sz[son[u]])son[u]=G[u][i];
}
}
void repos(int u)
{
to.f[][]=cf[u],to.f[][]=cg[u],to.f[][]=to.f[][]=1ll<<;
modify(,n,,dfn[u]);
}
void dfs(int u,int tp)
{
bel[u]=tp;
pos[bel[u]]=dfn[u]=++cnt;
tid[cnt]=u;
cf[u]+=p[u];
f[u]+=p[u];
if(son[u])dfs(son[u],tp);
for(int i=;i<G[u].size();i++)
if(G[u][i]!=fa[u])
{
if(G[u][i]!=son[u])dfs(G[u][i],G[u][i]);
f[u]+=min(f[G[u][i]],g[G[u][i]]);
g[u]+=f[G[u][i]];
}
if(bel[u]==u)cf[fa[u]]+=min(f[u],g[u]),cg[fa[u]]+=f[u];
repos(u);
}
void update(int x)
{
while(x)
{
int b=bel[x];
ll mn1=min(f[b],g[b]),mn2=f[b];
cf[fa[b]]-=mn1;
cg[fa[b]]-=mn2;
repos(x);
mat it=query(,n,,dfn[b],pos[b]);
f[b]=min(it.f[][],it.f[][]);
g[b]=min(it.f[][],it.f[][]);
cf[fa[b]]+=min(f[b],g[b]);
cg[fa[b]]+=f[b];
if(f[b]==mn2&&min(f[b],g[b])==mn1)break;
x=fa[bel[x]];
}
}
int main()
{
scanf("%d%d%*s",&n,&m);
for(int i=;i<=n;i++)scanf("%lld",&p[i]);
for(int i=,x,y;i<n;i++)scanf("%d%d",&x,&y),G[x].push_back(y),G[y].push_back(x);
build(,n,);
dfs();
dfs(,);
build(,n,);
while(m--)
{
int a,x,b,y;
scanf("%d%d%d%d",&a,&x,&b,&y);
if((fa[a]==b||fa[b]==a)&&x+y==){puts("-1");continue;}
(x?cg[a]:cf[a])+=1ll<<,update(a);
(y?cg[b]:cf[b])+=1ll<<,update(b);
ll ans=min(cf[],cg[]);
(x?cg[a]:cf[a])-=1ll<<,update(a);
(y?cg[b]:cf[b])-=1ll<<,update(b);
printf("%lld\n",ans);
}
}

自动机上DP:https://www.luogu.org/problemnew/show/P5279

#include<bits/stdc++.h>
using namespace std;
const int N=,mod=;
int n,tot,ans,c[][],fac[N],inv[N],has[N],f[][N][],ch[N][];
struct node{
int f[][][],cnt;
node(){memset(f,-,sizeof f),f[][][]=cnt=;}
bool operator<(const node&x)const
{
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
if(f[i][j][k]!=x.f[i][j][k])return f[i][j][k]<x.f[i][j][k];
return cnt<x.cnt;
}
}st[N];
void add(int&a,long long b){a=(a+b)%mod;}
map<node,int>S;
node trans(node u,int x)
{
node ret;
ret.cnt=min(u.cnt+(x>=),);
for(int a=;a<;a++)
for(int b=;a+b<;b++)
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
if(i+j+k+b*<=x&&u.f[a][i][j]!=-)
ret.f[a+b][j][k]=max(ret.f[a+b][j][k],min(u.f[a][i][j]+i+(x-i-j-k-b*)/,));
return ret;
}
int dfs(node u)
{
if(S.count(u))return S[u];
if(u.cnt==)return ;
for(int i=;i<;i++)for(int j=;j<;j++)if(u.f[][i][j]==)return ;
st[++tot]=u,S[u]=tot;
int pos=tot;
for(int i=;i<=;i++)ch[pos][i]=dfs(trans(u,i));
return pos;
}
int main()
{
scanf("%d",&n);
for(int i=,x;i<=;i++)scanf("%d%*d",&x),has[x]++;
for(int i=;i<=;i++)
{
c[i][]=;
for(int j=;j<=i;j++)c[i][j]=c[i-][j-]+c[i-][j];
}
fac[]=inv[]=inv[]=;for(int i=;i<=*n;i++)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
for(int i=;i<=*n;i++)fac[i]=1ll*fac[i-]*i%mod,inv[i]=1ll*inv[i-]*inv[i]%mod;
dfs(node());
f[][][]=;
for(int i=;i<=n;i++)
{
memset(f[i&],,sizeof f[i&]);
for(int j=;j<=tot;j++)
for(int k=has[i];k<=;k++)
if(ch[j][k])
for(int t=;t<=(i-)*;t++)
add(f[i&][ch[j][k]][k+t],1ll*f[i-&][j][t]*c[-has[i]][k-has[i]]);
}
for(int i=,sum;i<=n*-;i++)
{
sum=;
for(int j=;j<=tot;j++)add(sum,f[n&][j][i+]);
add(ans,1ll*sum*fac[i]%mod*fac[*n--i]);
}
ans=(1ll*ans*inv[*n-]+)%mod;
printf("%d",ans);
}

凸优化DP:https://www.luogu.org/problemnew/show/P3642

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=6e5+;
struct node{int l,r,dis;ll v;}e[N];
int n,m,tot,fa[N],len[N],rt[N],d[N],cnt;
ll p[N],sum;
int merge(int x,int y)
{
if(!x||!y)return x+y;
if(e[x].v<e[y].v)swap(x,y);
e[x].r=merge(e[x].r,y);
if(e[e[x].l].dis<e[e[x].r].dis)swap(e[x].l,e[x].r);
if(!e[x].r)e[x].dis=;
else e[x].dis=e[e[x].r].dis+;
return x;
}
int pop(int x){return merge(e[x].l,e[x].r);}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n+m;i++)
{
scanf("%d%d",&fa[i],&len[i]);
sum+=len[i],d[fa[i]]++;
}
for(int i=n+m;i>;i--)
{
ll l=,r=;
if(i<=n)
{
while(--d[i])rt[i]=pop(rt[i]);
r=e[rt[i]].v,rt[i]=pop(rt[i]);
l=e[rt[i]].v,rt[i]=pop(rt[i]);
}
e[++tot].v=l+len[i];
e[++tot].v=r+len[i];
rt[i]=merge(rt[i],merge(tot,tot-));
rt[fa[i]]=merge(rt[fa[i]],rt[i]);
}
while(d[]--)rt[]=pop(rt[]);
while(rt[])p[++cnt]=e[rt[]].v,rt[]=pop(rt[]);
for(int i=;i<=cnt;i++)sum-=p[i];
printf("%lld",sum);
}

插头DP:https://www.luogu.org/problemnew/show/P3190

#include<bits/stdc++.h>
using namespace std;
const int N=,mod=;
int n,m,ans,p,bin[],w[][],a[][N],f[][N],tot[N],hd[N],nxt[N];
void add(int S,int v)
{
int u=S%mod;
for(int i=hd[u];i;i=nxt[i])if(a[p][i]==S){f[p][i]=max(f[p][i],v);return;}
a[p][++tot[p]]=S,nxt[tot[p]]=hd[u],hd[u]=tot[p],f[p][tot[p]]=v;
}
int main()
{
scanf("%d%d",&n,&m);
ans=-1e9;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&w[i][j]);
bin[]=;for(int i=;i<=;i++)bin[i]=bin[i-]<<;
tot[p]=;
for(int i=;i<=n;i++)
{
for(int j=;j<=tot[p];j++)a[p][j]<<=;
for(int j=;j<=m;j++)
{
p^=;
memset(hd,,sizeof hd);
tot[p]=;
for(int k=;k<=tot[p^];k++)
{
int S=a[p^][k],b1=(S>>j*-)%,b2=(S>>j*)%,val=f[p^][k];
if(!b1&&!b2)
{
if(i<n&&j<m)add(S+bin[j-]+*bin[j],val+w[i][j]);
add(S,val);
}
else if(!b1&&b2)
{
if(j<m)add(S,val+w[i][j]);
if(i<n)add(S-b2*bin[j]+b2*bin[j-],val+w[i][j]);
}
else if(b1&&!b2)
{
if(j<m)add(S-b1*bin[j-]+b1*bin[j],val+w[i][j]);
if(i<n)add(S,val+w[i][j]);
}
else if(b1==&&b2==)
{
int k1=;
for(int t=j+;t<=m;++t)
{
if((S>>t*)%==)k1++;
if((S>>t*)%==)k1--;
if(!k1){add(S-bin[j-]-bin[j]-bin[t],val+w[i][j]);break;}
}
}
else if(b1==&&b2==)
{
int k1=;
for(int t=j-;t>=;--t)
{
if((S>>t*)%==)k1--;
if((S>>t*)%==)k1++;
if(!k1){add(S-*bin[j-]-*bin[j]+bin[t],val+w[i][j]);break;}
}
}
else if(b1==&&b2==)add(S-*bin[j-]-bin[j],val+w[i][j]);
else if(S-bin[j-]-*bin[j]==)ans=max(ans,val+w[i][j]);
}
}
}
printf("%d",ans);
}

容斥:https://www.lydsy.com/JudgeOnline/problem.php?id=3812

#include<bits/stdc++.h>
using namespace std;
const int N=,mod=1e9+;
int n,m,pw[N],f[N],g[N],h[N],p[N],in[N],ou[N],cnt[N],sz[N];
int main()
{
scanf("%d%d",&n,&m);
pw[]=;
for(int i=;i<=m;++i)pw[i]=2ll*pw[i-]%mod;
for(int i=,x,y;i<=m;++i)scanf("%d%d",&x,&y),in[<<(--y)]|=<<(--x),ou[<<x]|=<<y;
sz[]=;
for(int i=;i<(<<n);++i)sz[i]=sz[i^(i&-i)]+;
for(int S=;S<(<<n);++S)
{
int s=S&-S,T=S^s;
h[S]=h[T]+sz[in[s]&T]+sz[ou[s]&T],g[S]=,f[S]=pw[h[S]];
for(int R=T;R;R=(R-)&T)g[S]=(g[S]-1ll*g[R]*f[S^R]%mod+mod)%mod;
for(int R=S,t;R;R=(R-)&S)
{
if(R==S)p[R]=;else t=(R^S)&-(R^S),p[R]=p[R^t]+sz[ou[t]&R]-sz[in[t]&(R^S)];
f[S]=(f[S]-1ll*pw[p[R]+h[R^S]]*g[R]%mod+mod)%mod;
}
g[S]=(g[S]+f[S])%mod;
}
printf("%d",f[(<<n)-]);
}

DP模板的更多相关文章

  1. 插头DP模板

    /* 插头dp模板 抄的GNAQ 的 括号表示法 */ #include<cstdio> #include<algorithm> #include<cstring> ...

  2. HDU 2089 不要62(数位dp模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内不包含4和连续62的数的个数. 思路: 简单的数位dp模板题.给大家推荐一个好的讲解博客.h ...

  3. POJ 3286 How many 0's(数位DP模板)

    题目链接:http://poj.org/problem?id=3286 题目大意: 输入n,m,求[n,m]的所有数字中,0出现的总数是多少,前导零不算. 解题思路: 模板题,设dp[pos][num ...

  4. 数位dp模板 [dp][数位dp]

    现在才想到要学数位dp,我是不是很弱 答案是肯定的 以一道自己瞎掰的题为模板 //题: //输入数字n //从0枚举到n,计算这n+1个数中含有两位数a的数的个数 //如12930含有两位数93 #i ...

  5. 51nod 1009 数字1的数量(数位dp模板)

    给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数. 例如:n = 12,包含了5个1.1,10,12共包含3个1,11包含2个1,总共5个1.   数位dp的模板题   ...

  6. 51nod 1009 - 数字1的数量 - [数位DP][模板的应用以及解释]

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009 基准时间限制:1 秒 空间限制:131072 KB 给 ...

  7. bzoj1814 Ural 1519 Formula 1(插头dp模板题)

    1814: Ural 1519 Formula 1 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 924  Solved: 351[Submit][Sta ...

  8. HDU - 4722 Good Numbers 【找规律 or 数位dp模板】

    If we sum up every digit of a number and the result can be exactly divided by 10, we say this number ...

  9. 数位dp 模板加例题

    概念:所谓数位"dp",是指对数字的"位"进行的与计数有关的DP.一个数一个位,十位,百位,千位等,数的每一位就是数位.数位DP用来解决与数字操作有关的问题.例 ...

  10. 数位dp模板

    #include <bits/stdc++.h> typedef long long LL; const int MOD = (int)1e9 + 7; LL L,R,G,T; int d ...

随机推荐

  1. LeetCode160 相交链表(双指针)

    题目: click here!!题目传送门 思路: 1.笨方法 因为如果两个链表相交的话,从相交的地方往后是同一条链表,所以: 分别遍历两个链表,得出两个链表的长度,两个长度做差得到n,然后将长的链表 ...

  2. 18.swoole学习笔记--案例

    <?php //创建webSocket服务器 $ws=); //open $ws->on('open',function($ws,$request){ echo "新用户 $re ...

  3. AFNetworking实现表单(multipart)形式上传图片

    最近遇到个问题,就是上传图片到服务器,后台说用表单形式... 由于没弄过这种上传,所以搜了大堆资料,但也没解决问题. 最后通过请教一位大神才得以解决这个简单的问题... 现在将此方法做个笔记... & ...

  4. Essay写作常见错误精选

    Essay写作常见错误精选.Essay写作有许多不为人注意的小细节,如果申请人在这些细节上不注意,往往会犯一些很典型的错误.和小编一起来看看留学Essay写作常见错误解析. 1)直接把申请学校A的Es ...

  5. Sklearn 预处理数据

    ## 版权所有,转帖注明出处 章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Lear ...

  6. 动态添加,删除class样式

    function hasClass(obj, cls) { //class位于单词边界,判断class样式是否已经存在 return obj.className.match(new RegExp('( ...

  7. CentOS下的安装命令 安装Nginx 更新yum源 kali系统当中的软件管理命令(第五天)

    Linux下软件的安装:方式:yum/rpm/源码安装YUM安装(帮助管理员解决依赖关系):yum search mysqld 在源中搜索软件包yum install mysql-connector- ...

  8. 微信小程序拒绝授权后提示信息以及重新授权

    wx.authorize({ scope: 'scope.writePhotosAlbum', success() { // 授权成功 wx.saveImageToPhotosAlbum({ file ...

  9. 不要对md5file.read()计算md5值

    最近遇到的一个问题,我使用以下代码对备份文件计算MD5值: # md5file=open("%s" % outputpath, 'rb') # md5=hashlib.md5(md ...

  10. Java算法练习——最长公共前缀

    题目链接 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 说明: 所有输入只包含小写字母 a-z . 示例 1 输入: [&qu ...