考虑状压。

设计状态 \(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. golang向上取整、向下取整和四舍五入

    一.概述 官方的math 包中提供了取整的方法,向上取整math.Ceil() ,向下取整math.Floor() 二.用法 package main import ( "fmt" ...

  2. Git:如何撤销已经提交的代码

    日常操作流程 本地工作区(尚未暂存) ---> add . 到暂存区 ---> commit 到本地仓库 ---> pull拉取关联远程仓库分支合并到本地的分支---> pus ...

  3. NASM中的内存引用

    NASM对于内存的引用规则非常简单,如果想访问内存中的内容,就将地址用[]包围,如果没有[],就表示是地址本身,而不是内容. mov ax,[wordvar] mov ax,[wordvar+1] m ...

  4. C语言:send + more = money,单词相加求解字母数字谜问题

    我用的是穷举法,虽然有点笨,但是在想不到其他更好的方法对我而言就是穷举法. 有程序员大大想到其他方法也可以私信我一起探讨一下~ #include<stdio.h> int main() { ...

  5. openstack的用户(user), 租户(tenant), 角色(role)概念区分

    用户身份管理有三个主要的概念: 用户Users租户Tenants角色Roles1. 定义 这三个概念的openstack官网定义(点击打开链接) 1.1 用户(User) openstack官网定义U ...

  6. 【漏洞复现】用友NC uapjs RCE漏洞(CNVD-C-2023-76801)

    产品介绍 用友NC是一款企业级ERP软件.作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计.采购管理.销售管理.物料管理.生产计划和人力资源管理等,帮助企业实现数字化转型和高效管 ...

  7. vulnhub靶场 --> Red: 1

    靶机下载地址 Red: 1 << 点我 开始打靶 IP发现 nmap扫描网段发现靶机ip:192.168.111.142 端口发现 对靶机进行常规端口扫描 访问网站 到处点击发现存在一个可 ...

  8. SpringMVC在返回JSON数据时出现406错误解决方案

    在SpringMVC框架的使用中常常会使用@ResponseBody注解,修饰"处理器"(Controller的方法),这样在处理器在返回完毕后,就不走逻辑视图,而是将返回的对象转 ...

  9. 【进阶篇】使用 Stream 流对比两个集合的常用操作分享

    目录 前言 一.集合的比较 1.1需要得到一个新的流 1.2只需要一个简单 boolean 结果 二.简单集合的对比 2.1整型元素集合 2.2字符串元素集合 2.3其它比较 三.Stream 基础回 ...

  10. 你好Avalonia框架

    https://docs.avaloniaui.net/docs/getting-started/ 起因公司事业部是做移动等营业厅办理相关业务,无纸化系统的.简单的说就是以前去营业厅办理业务都需要各种 ...