jzoj5230. 队伍统计 (B组——Day9)

news/2025/1/3 4:13:50/

jzoj5230. 队伍统计 (B组——Day9)

题目

Description

现在有n个人要排成一列,编号为1->n 。但由于一些不明原因的关系,人与人之间可能存在一些矛盾关系,具体有m条矛盾关系(u,v),表示编号为u的人想要排在编号为v的人前面。要使得队伍和谐,最多不能违背k条矛盾关系(即不能有超过k条矛盾关系(u,v),满足最后v排在了u前面)。问有多少合法的排列。答案对10^9+7取模。

Input

输入文件名为count.in。
第一行包括三个整数n,m,k。
接下来m行,每行两个整数u,v,描述一个矛盾关系(u,v)。
保证不存在两对矛盾关系(u,v),(x,y),使得u=x且v=y 。

Output

输出文件名为count.out。
输出包括一行表示合法的排列数。

Sample Input

输入1:

4 2 1
1 3
4 2

输入2:

10 12 3
2 6
6 10
1 7
4 1
6 1
2 4
7 6
1 4
10 4
10 9
5 9
8 10

Sample Output

输出1:

18

输出2:

123120

Data Constraint

对于30%的数据,n<=10
对于60%的数据,n<=15
对应100%的数据,n,k<=20,m<=n*(n-1),保证矛盾关系不重复。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;int const mod=1e9+7;
int a[21],f[1<<21][21],t[1<<21];
int n,m,k,ans;int main (){freopen("count.in","r",stdin);freopen("count.out","w",stdout);scanf("%d%d%d",&n,&m,&k);for (int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);a[u]|=(1<<(v-1));}for (int i=0;i<=(1<<n)-1;i++){int x=i;while (x){t[i]++;x-=(x&(-x));}}f[0][0]=1;for(int i=0;i<=(1<<n)-1;i++)for(int j=0;j<=k;j++)if(f[i][j]){for(int x=1;x<=n;x++)if((i&(1<<(x-1)))==0)if(j+t[i&a[x]]<=k)	{int q=i|(1<<(x-1)),p=j+t[i&a[x]];f[q][p]=(f[q][p]+f[i][j])%mod;}}for (int i=0;i<=k;i++)ans=(ans+f[(1<<n)-1][i])%mod;printf("%d\n",ans);
}

http://www.ppmy.cn/news/346230.html

相关文章

hdu 5230 ZCC loves hacking

刚开始滚动数组错了 #include <iostream> #include <algorithm> #include <cstring> #include <functional> #include <cmath> using namespace std; typedef long long ll; const int MAXN 100005; const int MAXNUM 320; const ll INF 0x3f…

Jzoj5230 队伍统计

现在有n个人要排成一列&#xff0c;编号为1->n 。但由于一些不明原因的关系&#xff0c;人与人之间可能存在一些矛盾关系&#xff0c;具体有m条矛盾关系(u,v),表示编号为u的人想要排在编号为v的人前面。要使得队伍和谐&#xff0c;最多不能违背k条矛盾关系&#xff08;即不能…

在TaiShan200 server 2180 昆鹏920 5230裸服务器上安装 ubuntu18.04

最近客户那边要搭建一个开源异构服务器云平台。 一共有两种不同构架的服务器&#xff0c;一种是x86构架的&#xff0c;另外一种就是arm构架的&#xff08;本文涉及的鲲鹏服务器当时使用时&#xff0c;只有一块1T的SATA硬盘&#xff09;。 在这个网站 http://old-releases.ubun…

hdu 5230 整数划分 dp

题目&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid5230 题意&#xff1a;给定n,c,l,r。求有多少种方法从1~n-1选取任意k数每个数的权重为其下标&#xff0c;使得这些数字之和加上c之后在l,r范围内。 题解&#xff1a;第一反应是计数01包&#xff0c;但是范围给定的n…

【JZOJ5230】队伍统计【状压DP】

题目大意&#xff1a; 题目链接&#xff1a;https://jzoj.net/senior/#main/show/5230 现在有 n n n个人要排成一列&#xff0c;编号为 1 ∼ n 1\sim n 1∼n 。但由于一些不明原因的关系&#xff0c;人与人之间可能存在一些矛盾关系&#xff0c;具体有 m m m条矛盾关系 ( u , …

hdu5230

bc41第三题&#xff1a; 由 1 &#xff5e; n-1 这 n-1 个数组成 l - c 到 r - c 闭区间内的数共有多少种组合方法&#xff1b; 据称本来应该也比较简单吧&#xff0c;xiaoxin说了个五边形数&#xff0c;然后纷纷找了五边形数的模板&#xff0c;虽然并没有来得及AC&#xff0c;…

hdu 5230

ZCC loves hacking 题目描述&#xff1a; 其实就是给了n~100000&#xff0c;c&#xff0c;l&#xff0c;r&#xff0c;其中C≤L≤R 题解&#xff1a; 所有情况数&#xff0c;刚开始一定会想dp【i】【j】用到数i达到和j的背包的算法&#xff0c;但是发现太大了。而且没有很好…

ZCMU--5230: 排练方阵(C语言)

Description 又到了一年一度的白马湖小学运动会了&#xff0c;为了使入场式能顺利进行&#xff0c;小朋友们最近在排练方阵。黄老师和张老师作为二年级&#xff08;1&#xff09;班的班主任和副班主任&#xff0c;却被小朋友的平均身高困扰住了。 方阵是一个n*m的矩阵&#x…