摘要:
$MST$裸题 const int N=110; int g[N][N]; int dist[N]; bool vis[N]; int money; int n,m; int prim() { memset(dist,0x3f,sizeof dist); memset(vis,0,sizeof vi 阅读全文
摘要:
暴力拆分 暴力拆分就是把第$i$种物品看做$s_i$个独立的物品,每个物品只有一个,转化为01背包问题。 const int N=110; int f[N]; int n,m; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { int v,w,s; ci 阅读全文
摘要:
状态表示:$f(i,j,k,l)\(表示第一个人走到\)(i,j)\(,第二个人走到\)(k,l)$的价值最大值 特判一下坐标相等情况就好了。 const int N=15; int f[N][N][N][N]; int g[N][N]; int n; int main() { cin>>n; in 阅读全文
摘要:
正着求一遍$LIS$,反着求一遍$LIS$,最后拿总人数减去满足$T_1<...<T_i>T_{i+1}>…>T_K(1<=i<=K)$的人数即可。 const int N=110; int f[N],g[N]; int a[N]; int n; int main() { cin>>n; for(i 阅读全文
摘要:
$01$背包裸题 const int N=10010,M=30010; int f[M]; int a[N],b[N]; int n,m; int main() { cin>>m>>n; for(int i=1;i<=n;i++) cin>>a[i]>>b[i]; for(int i=1;i<=n; 阅读全文