做网站显示上次登录时间代码,工业企业网站建设费,全国企业注册官方网,wordpress无法进入仪表盘去tm插头dp 数据范围这么小,又要求,显然上dp 设\(f[i][j][k]\)表示放到第\(i\)行,总共放了\(j\)个那啥,第\(i\)行的格子状态为\(k\)的方案 先预处理出一行内状态的放置个数和格子状态,因为那啥占据周围一圈的格子,所以转移时前后两行格子状态没有交集的状态转移 #includeal…去tm插头dp 数据范围这么小,又要求,显然上dp 设\(f[i][j][k]\)表示放到第\(i\)行,总共放了\(j\)个那啥,第\(i\)行的格子状态为\(k\)的方案 先预处理出一行内状态的放置个数和格子状态,因为那啥占据周围一圈的格子,所以转移时前后两行格子状态没有交集的状态转移 #includealgorithm
#includeiostream
#includecstring
#includecstdio
#includevector
#includecmath
#includectime
#includequeue
#includemap
#define LL long long
#define il inline
#define re registerusing namespace std;
const LL mod1000000007;
il LL rd()
{re LL x0,w1;re char ch;while(ch0||ch9) {if(ch-) w-1;chgetchar();}while(ch0ch9) {x(x3)(x1)(ch^48);chgetchar();}return x*w;
}
LL nn,n,kk,f[10][85][1100],ans;
LL nu[1100],b[1100],tt; //nu是某个状态的棋子数量,b为相对应的格子状态
bool v[1100];
il void init(int i,int j,int k)
{if(v[k]) return;tt;nu[tt]j,b[tt]k;v[k]true;for(;in;i)init(i2,j1,k|(1(i-1))|(in?(1i):0)); //对于某个棋子所在行以及上(没什么用),下的行,棋子所在列和左边(没什么用),右边都被占了
}int main()
{freopen(xzz.in,r,stdin);freopen(xzz.out,w,stdout);nrd(),kkrd();nn1n;init(1,0,0);for(int i1;itt;i) f[1][nu[i]][b[i]]1;for(int i2;in;i){for(int j1;jtt;j)for(int k1;ktt;k){if((b[j]|b[k])!b[j]b[k]) continue;for(int lnu[j];lkk;l)f[i][l][b[j]]f[i-1][l-nu[j]][b[k]];}}for(int j1;jtt;j) ansf[n][kk][b[j]];printf(%lld\n,ans);return 0;
}
语文好差啊嘤嘤嘤转载于:https://www.cnblogs.com/smyjr/p/9408631.html