![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
状压dp
,
infinity°º
stay hungry stay foolish
展开
-
hdu5691状压dp(排列dp)
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int inf=0x80000000;const int maxn=20,maxs=(1<<16)+5;//maxs是二进制的 int n,a[maxn],p[maxn];//从1开始存 int h[maxn],c[maxs],dp[maxs][maxn];/*h:位置0~n-1上 预存的a的下标c:[二进制] 与a的下标 */.原创 2021-09-03 11:33:51 · 116 阅读 · 0 评论 -
zjhu1030铺砖块(状压dp)
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod=1e9+7,maxs=(1<<17)+5;//17^2<300ll dp[maxs<<1],*pre,*cur;//数组要开大一位 int main(){ int t,S,n,m; cin>>t; while(t--){ scanf("%d%d",&n,&m);.原创 2021-09-07 19:23:08 · 105 阅读 · 0 评论 -
hdu5418状压dp(排列dp模板)
g[i][j]:i 和 j 之间的最优解,通过 Floyd 算法求解#include<bits/stdc++.h>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const int maxn=20,maxs=(1<<16)+5;int n,m,g[maxn][maxn],c[maxs],dp[maxs][maxn];//dp[s][i]:s 为曾到达过的城市的下标的映射,i是最后一.原创 2021-09-03 20:00:52 · 94 阅读 · 0 评论 -
集合划分:状压dp
题目描述n个人,每个人手上有一个数ai。将这些人分成若干组,组没有编号,要求每组人手上的数字之和都是质数。求合法的分组方案数。输入格式第一行一个正整数T,表示测试数据的组数每组数据第一行一个正整数n每组数据第二行n个正整数a1,a2,…,an1≤T≤51≤n≤151≤ ai≤100输出格式每组数据一行一个整数,即合法的分组方案数输入样例复制133 2 5输出样例复制3#include<bits/stdc++.h>/...原创 2021-12-13 19:35:11 · 242 阅读 · 0 评论