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++,骗分++

posted @ 2018-10-11 18:51  ASDIC减除  阅读(204)  评论(0编辑  收藏  举报