摘要: 竟然搜过去了。。显然从后往前搜索。每次判断最后若干位是否和目标一致。对于每一位,可以填i个0 j个4 k个7 其中i+j+k==6先预处理出这个。然后按位搜索。#include #include #include using namespace std;int a[100][4];int all;typedef unsigned long long ll;ll M;int d[100],np;ll te[100];void prework(){ all=0; for (int i=0;i> T; ll N; while(T--){ memset(dig,0... 阅读全文
posted @ 2013-10-15 16:18 qinhang3 阅读(153) 评论(0) 推荐(0) 编辑
摘要: ZOJ 3545也是这个题。每个节点的flag表示经过状态压缩的当前节点包含的所有字串。在build的时候直接通过 flag = flag or fail->flag 来更新f[i][j][k]表示长度为i时位于第j个节点包含字串状态为k是否可能因为空间限制,利用滚动数组,注意初始化问题转移的时候 if (f[i][j][k]) f[i+1][son][k|son->flag] =true;初始化 f[0][0][0]=true 后顺推即可。对于每一个状态,预处理出该状态的值。见 void prework(); 函数H[i] = H[i-lowbit(i)]+H[lowbit(i) 阅读全文
posted @ 2013-10-15 14:16 qinhang3 阅读(201) 评论(0) 推荐(0) 编辑