考虑状压。

设计状态 \(dp_{i,j}\) 表示考虑 \(i\) 个数,每个数的使用情况的二进制压缩表示为 \(j\) 的情况下的方案数。

然后去正常转移。

唯一特殊的是将限制放在点上,假若这个点转移时不满足限制直接让其的方案数为 \(0\)。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 20;
const int maxv = 1e6+114;
int dp[maxn][maxv];
int n,m;
vector< pair<int,int> >imp[maxn];
void check(int i,int j){//假若状态不合法直接 pass
for(pair<int,int> now:imp[i+1]){
int cnt=0;
for(int pos=0;pos<n;pos++){
if(j&(1<<pos)){
if((pos+1)<=now.first) cnt++;
}
}
if(cnt>now.second){
dp[i][j]=0;
}
}
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
imp[x].push_back(make_pair(y,z));
}
for(int i=0;i<n;i++) dp[0][1<<i]=1,check(0,1<<i);
for(int i=1;i<n;i++){
for(int j=0;j<(1<<n);j++){
for(int k=0;k<n;k++){
if(j&(1<<k)){
dp[i][j]+=dp[i-1][j^(1<<k)];
}
}
check(i,j);
}
}
cout<<dp[n-1][(1<<n)-1];
}

随机推荐

  1. redis rdb数据持久化

    面试和工作,持久人都是重点! Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失.所以Redis提供了持久化功能! RDB(Redis ...

  2. iOS LLVM 中的宏定义

    在阅读 Objc 库源码时常常会遇到很多宏定义,比如宏 SUPPORT_INDEXED_ISA.SUPPORT_PACKED_ISA,代码如下所示: // Define SUPPORT_INDEXED ...

  3. 使用 Docker 部署 WebTop 运行 Linux 系统

    1)项目介绍 GitHub:https://github.com/linuxserver/docker-webtop WebTop 它是一个基于 Linux ( Ubuntu 和 Alpine 两种版 ...

  4. 基于webapi的websocket聊天室(一)

    上一次我已经讲了在webapi主机上面加入websocket中间件. 这次就更进一步,搭建一个websocket局域网聊天室. 传送门-->webapi添加添加websocket中间件 下一篇 ...

  5. MyBatis两级缓存机制详解

    缓存是提高软硬件系统性能的一种重要手段:硬件层面,现代先进CPU有三级缓存,而MyBatis也提供了缓存机制,通过缓存机制可以大大提高我们查询性能. 一级缓存 ​ Mybatis对缓存提供支持,但是在 ...

  6. golang kmp算法实现

    // 不多逼逼直接上代码.原理的话可以参考下面的链接.讲的非常清晰package main import "fmt" func genNext(s string) []int { ...

  7. WPF摄像头使用(WPFMediaKit)

    添加WPFMediaKit引用 使用WPFMediaKit操作摄像头需要安装WPFMediaKit相关的Nuget包.选中需要进行摄像头操作的项目,然后通过Nuget安装即可. 页面代码 引入命名空间 ...

  8. (JAVA)设计模式-适配器模式

    模式的定义和特点: 适配器模式(Adapter)是一种将一个类的接口转换成客户希望的另外一个接口的设计模式,可以提高代码的复用性和灵活性. 结构与实现: 定义一个适配器类来实现业务接口,再继承现有组件 ...

  9. kettle从入门到精通 第三十五课 kettle 变量

    1.设置变量 a.可以通过转换中的"设置变量"步骤进行设置. b.手动通过kettle.properties文件或通过"编辑"菜单中的"设置环境变量& ...

  10. INFINI Labs 产品更新 | Easysearch 1.8.0 发布数据写入限流功能

    INFINI Labs 产品又更新啦~,包括 Easysearch v1.8.0.Gateway.Console.Agent.Loadgen v1.25.0.本次各产品更新了很多亮点功能,如 Easy ...