题目大意:数轴上有n个泥点,共有m个木板,求最少用几个木板可以覆盖全部泥点,并求最优方案数(n,m<=15)

看范围,肯定是状压

f[i][j]表示前i个泥点都被覆盖,使用的木板集合为j

转移:f[ii][j|bit[k]]+=f[i][j]*(r-l+1)

ii表示枚举木板k能转移到的所有位置,r,l分别表示可行的左右端点

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define mod 1000000007ll
using namespace std;
int n,m,bit[20],num=50;
long long pos[20],l[20],d[20][20],len,f[18][1<<16+5],ans=0,L,R;
bool bo=0;
int getn(int x){
int tot=0,a=0;
while(x){
a=x%2;
if(a==1) tot++;
x/=2;
}
return tot;
}
int main()
{
//freopen("spot.in","r",stdin);
//freopen("spot.out","w",stdout);
bit[0]=1; for(int i=1;i<=16;i++) bit[i]=bit[i-1]<<1;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&pos[i]);
sort(pos+1,pos+n+1);
pos[n+1]=0x7fffffffffll;
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
d[i][j]=pos[j]-pos[i];
scanf("%d",&m);
for(int i=1;i<=m;i++)
scanf("%lld",&l[i]);
sort(l+1,l+m+1);
f[0][0]=1;
for(int i=0;i<=n;i++){
for(int j=0;j<bit[m];j++){
if(!f[i][j]) continue;
for(int k=1;k<=m;k++){
if((j|bit[k-1])==j) continue;
for(int ii=i+1;ii<=n;ii++){
if(d[i+1][ii]<l[k]){
L=pos[ii]-l[k]+1;
R=min(pos[i+1],pos[ii+1]-l[k]);
f[ii][j|bit[k-1]]+=f[i][j]*(R-L+1);
f[ii][j|bit[k-1]]%=mod;
}
}
}
}
}
for(int j=0;j<bit[m];j++)
if(f[n][j])
num=min(num,getn(j));
for(int j=0;j<bit[m];j++){
if(f[n][j]&&getn(j)==num){
bo=1;
ans+=f[n][j];
ans%=mod;
}
}
if(!bo){
printf("NO\n");
return 0;
}
else printf("%d\n%lld\n",num,ans);
return 0;
}

spot 状压dp的更多相关文章

  1. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

  2. nefu1109 游戏争霸赛(状压dp)

    题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...

  3. poj3311 TSP经典状压dp(Traveling Saleman Problem)

    题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...

  4. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  5. 【BZOJ2073】[POI2004]PRZ 状压DP

    [BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...

  6. bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)

    数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...

  7. HDU 1074 Doing Homework (状压dp)

    题意:给你N(<=15)个作业,每个作业有最晚提交时间与需要做的时间,每次只能做一个作业,每个作业超出最晚提交时间一天扣一分 求出扣的最小分数,并输出做作业的顺序.如果有多个最小分数一样的话,则 ...

  8. 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP

    [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) ...

  9. 【BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP

    [BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排 Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M< ...

随机推荐

  1. css3图片垂直居中

    图片相对父元素垂直居中, css3属性给父级元素设置 display: -webkit-box; -moz-box-align: center; -webkit-box-align: center; ...

  2. 用eclipse运行和部署myeclipse项目

    版本:Eclipse-jee-indigo(3.7) 配置Project Facets 点击项目选择 properties -->Project Facets--> Dynamic Web ...

  3. 排序算法的C语言实现(下 线性时间排序:计数排序与基数排序)

    计数排序 计数排序是一种高效的线性排序. 它通过计算一个集合中元素出现的次数来确定集合如何排序.不同于插入排序.快速排序等基于元素比较的排序,计数排序是不需要进行元素比较的,而且它的运行效率要比效率为 ...

  4. Ubuntu系统下配置IP地址方法介绍

    配置IP方式有两种: 1.通过命令直接配置 sudo ifconfig eth0 IP地址 netmask 子网掩码------配置IP地 sudo route add default gw 网关-- ...

  5. HBase最佳实践 - 集群规划

    本文由  网易云发布. 作者:范欣欣 本篇文章仅限本站分享,如需转载,请联系网易获取授权. HBase自身具有极好的扩展性,也因此,构建扩展集群是它的天生强项之一.在实际线上应用中很多业务都运行在一个 ...

  6. Android Studio 2.3 instant run与miui冲突问题的解决

    Android Studio最近发布的2.3版本,由于这个版本改进后的Instant Run功能和很多国内ROM存在兼容问题,所以导致不得不做一些妥协策略,具体在小米Rom上,就是把小米rom的调试定 ...

  7. HTML元素的专用传参数据属性

    把参数直接放到事件定义里面,类似下面这样,也是可以,但是这样不够Nice. <a href="javascript:void(0)" onclick="clickh ...

  8. 与班尼特·胡迪一起攻破浮空城 (HZNU-2264)

    与班尼特·胡迪一起攻破浮空城 AC Time Limit:  1 s      Memory Limit:   256 MB Description 桐人为了拯救被困在浮空城堡最顶层的亚丝娜,决定从第 ...

  9. 保证你能看懂的KMP字符串匹配算法

    文章转载自一位大牛: 阮一峰原网址http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm ...

  10. WiderG的博客皮肤

    我的Skin 还是亮出自己的Blog定制代码吧: 其实也不是完全自己写的(有抄袭),也不大懂这方面的知识,代码冗长,逻辑不清,加载缓慢,见谅喽