abc288g
通过这道题复习一下sosdp。
sosdp用于求解子集和。
我们设表示后位是的子集,前位等于的中的数的和
在从转移到时,需要分2种情况讨论。
1.当的第位是,
2.当的第位是,
这道题事实上可以类似sosdp,然后把这个过程反着做。
#include<bits/stdc++.h>
using namespace std;
int n,a[1000000],pw[1000],f[1000000][15];
int main(){
pw[0]=1;
for(int i=1;i<14;i++)
pw[i]=pw[i-1]*3;
scanf("%d",&n);
for(int i=0;i<pw[n];i++)
scanf("%d",&a[i]);
for(int i=0;i<pw[n];i++)
f[i][0]=a[i];
for(int i=0;i<n;i++)
for(int j=0;j<pw[n];j++){
int wz=(j/pw[i])%3;
int pz=wz*pw[i];
int p1=f[j-pz][i],p2=f[j-pz+pw[i]][i],p3=f[j-pz+pw[i]*2][i];
if(wz==0)
f[j][i+1]=p2-p3;
else if(wz==1)
f[j][i+1]=p3+p1-p2;
else
f[j][i+1]=p2-p1;
}
for(int i=0;i<pw[n];i++)
printf("%d ",f[i][n]);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下