luogu 1731 搜索剪枝好题
搜索剪枝这个东西真的是骗分利器,然鹅我这方面菜的不行,所以搜索数学dp三方面是真的应该好好训练一下
一本通的确该认真的刷嗯
#include<bits/stdc++.h> using namespace std; int b[25],n,m,ans; inline void dfs(int p,int s,int v,int h,int r){ if(p==0){ if(v==n) ans=min(ans,s);return;} if(v+b[p-1]>n) return; if(2*(n-v)/r+s>=ans) return; int i,j; for(i=r-1;i>=p;i--){//半径 if(p==m) s=i*i; int hh=min((n-v-b[p-1])/(i*i),h-1); for(j=hh;j>=p;j--) dfs(p-1,s+2*i*j,v+i*i*j,j,i); } } int main(){ scanf("%d%d",&n,&m);ans=0x7fffffff; for(int i=1;i<=20;i++) b[i]=b[i-1]+i*i*i; dfs(m,0,0,n+1,n+1); if(ans==0x7fffffff) printf("0"); else printf("%d\n",ans); return 0;}
剪枝这种骗分利器真的骚的爆炸,noip rp++,骗分++