poj 3133 Manhattan Wiring 插头dp

2014-11-23 21:58:37 来源: 作者: 浏览: 8
插头dp 这个题目还是比较直接的,就是转移比较麻烦,要先考虑格子的三种情况,然后分别讨论转移情况。
不过我认为用启发式搜索应该是可以更加直接有效的过这题。
有时间再试试启发式。
 
#include   
#include   
#include   
using namespace std;  
const int maxn=10,maxm=2e4+9;  
int a[maxn][maxn];  
int n,m;  
  
struct  
{  
    int hash[maxm],lon;  
    struct  
    {  
        int key,dist,next;  
    }data[maxm];  
    void clear()  
    {  
        memset(hash,-1,sizeof(hash));  
        lon=0;  
    }  
    void push(int key,int dist)  
    {  
//        prin(key);  
        int tmp=key%maxm;  
        for(int k=hash[tmp];k!=-1;k=data[k].next)  
        if(data[k].key==key)  
        {  
            data[k].dist=min(data[k].dist,dist);  
            return ;  
        }  
        data[++lon].dist=dist;  
        data[lon].key=key;  
        data[lon].next=hash[tmp];  
        hash[tmp]=lon;  
    }  
}dp[2];  
  
inline int getbit(int key,int t)  
{  
    key=key&(3<>t*2;  
    return key;  
}  
  
inline int movbit(int key,int j)  
{  
    key=key< 
  


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: