洛谷P2523 [HAOI2011]Problem c(计数dp)
题面
题解
首先,显然一个人实际位置只可能大于或等于编号
先考虑无解的情况
对于编号为\(i\),如果确认的人编号在\([i,n]\)中数量大于区间长度,那么就无解
记\(S[i]\)表示确认的人编号在\([i,n]\)中数量
我们只要考虑剩下的\(n - m\)人
\(f[i][j]\)表示编号\(>=i\)的,已经确认了\(j\)人
那么我们枚举多少人编号为\(i\)
\(f[i][j] = \sum f[i + 1][j - k] * (^j_k)\)
因为交换一些人的编号也是可行方案,所以乘上一个组合数
Code
#include<bits/stdc++.h>
#define LL long long
#define RG register
using namespace std;
template<class T> inline void read(T &x) {
	x = 0; RG char c = getchar(); bool f = 0;
	while (c != '-' && (c < '0' || c > '9')) c = getchar(); if (c == '-') c = getchar(), f = 1;
	while (c >= '0' && c <= '9') x = x*10+c-48, c = getchar();
	x = f ? -x : x;
	return ;
}
template<class T> inline void write(T x) {
	if (!x) {putchar(48);return ;}
	if (x < 0) x = -x, putchar('-');
	int len = -1, z[20]; while (x > 0) z[++len] = x%10, x /= 10;
	for (RG int i = len; i >= 0; i--) putchar(z[i]+48);return ;
}
const int N = 310;
int n, m, Mod, s[N], f[N][N], C[N][N];
void pls(int &x, int y) {
	x += y;
	if (x >= Mod) x -= Mod;
}
void solve() {
	read(n), read(m), read(Mod);
	for (int i = 0; i <= 300; i++) C[i][0] = C[i][i] = 1;
	for (int i = 2; i <= 300; i++)
		for (int j = 1; j < i; j++)
			C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % Mod;
	memset(s, 0, sizeof(s));
	for (int i = 1, x; i <= m; i++) read(x), read(x), s[x]++;
	for (int i = n; i; i--) s[i] += s[i + 1];
	bool flag = 0;
	for (int i = 1; i <= n; i++)
		if (s[i] > n - i + 1) {
			flag = 1;
			break;
		}
	if (flag) {
		puts("NO");
		return ;
	}
	memset(f, 0, sizeof(f));
	f[n + 1][0] = 1;
	for (int i = n; i; i--)
		for (int j = 0; j <= n - i + 1 - s[i]; j++)
			for (int k = 0; k <= j; k++)
				pls(f[i][j], 1ll * f[i + 1][j - k] * C[j][k] % Mod);
	printf("YES %d\n", f[1][n - m]);
	return ;
}
int main() {
	int T;
	read(T);
	while (T--) solve();
	return 0;
}
洛谷P2523 [HAOI2011]Problem c(计数dp)的更多相关文章
- 洛谷 P2523 [HAOI2011]Problem c
		洛谷1或洛谷2,它们是一样的题目,手动滑稽- 这一题我是想不出来, 但是我想吐槽一下坐我左边的大佬. 大佬做题的时候,只是想了几分钟,拍了拍大腿,干脆的道:"这不是很显然吗!" 然 ... 
- 洛谷$P2523\ [HAOI2011]\ Problem\ c$ $dp$
		正解:$dp$ 解题报告: 传送门$QwQ$ 首先港下不合法的情况.设$sum_i$表示$q\geq i$的人数,当且仅当$sum_i>n-i+1$时无解. 欧克然后考虑这题咋做$QwQ$. 一 ... 
- 洛谷P2522 - [HAOI2011]Problem b
		Portal Description 进行\(T(T\leq10^5)\)次询问,每次给出\(x_1,x_2,y_1,y_2\)和\(d\)(均不超过\(10^5\)),求\(\sum_{i=x_1} ... 
- 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)
		传送门 我们考虑容斥,设$ans(a,b)=\sum_{i=1}^a\sum_{j=1}^b[gcd(a,b)==k]$,这个东西可以和这一题一样去算洛谷P3455 [POI2007]ZAP-Quer ... 
- 洛谷P2522 [HAOI2011]Problem b (莫比乌斯反演+容斥)
		题意:求$\sum_{i=a}^{b}\sum_{j=c}^{d}[gcd(i,j)==k]$(1<=a,b,c,d,k<=50000). 是洛谷P3455 [POI2007]ZAP-Qu ... 
- 洛谷 P2519 [HAOI2011]problem a
		传送门 考虑转化为求最多说真话的人数 设$f(i)$表示排名前$i$的人中最多说真话的人的数量,考虑转移,如果由$j$转移而来,可以设$[j,i]$之间的人全都分数相等,那么式子就是$f[i]=f[j ... 
- 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)
		题目描述 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入输出格式 输入格式: 第一行一个整数 ... 
- 洛谷 P2522 [HAOI2011]Problem b (莫比乌斯反演+简单容斥)
		题目描述 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入输出格式 输入格式: 第一行一个整数 ... 
- 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
		洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ... 
随机推荐
- Ubuntu 安装配置 nginx
			作者:任明旭链接:https://www.zhihu.com/question/46241604/answer/100788789来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ... 
- IntelliJ IDEA 2017版 导入maven项目需要的包
			1.选中项目,鼠标右键--->maven---->Reimport 
- 加载 bean.xml 的几种方式 (java or web project)
			1. java project ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:bean1.xm ... 
- 声音处理(Cool Edit)
			平直化处理 上升半音 
- ADO接口之_RecordsetPtr
			转自:http://hi.baidu.com/%CE%D2%B6%CF%C1%CB%CB%BC%C4%EE/blog/item/e057c526c6af6c29c995596e.html _Recor ... 
- Tweak和app交互方案【进程通信】
			Core Foundation DEMO:Tweak端: CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCent ... 
- .NET Core2使用Azure云上的Iot-Hub服务
			基于工业4.0大背景下的工业物联网是近几年内热门的话题,依靠信息化技术企业可以实现数字化转型,生产可以实现智能化制造,设备可以实现自动化运作.然而,海量的数据采集是整个建设过程的基础环节,如何处理与利 ... 
- Linux Guard Service - 进程分裂与脱离
			进程分裂更名 void set_ps_name(char *name) { prctl(PR_SET_NAME, name); } 修改进程长名称 备份进程环境变量空间 for (i = 1; i & ... 
- JavaScript实现的3D球面标签云效果
			这个效果都是由 FLASH 实现的,能不能由 JavaScript 实现呢? 我们也十分喜欢这个效果,就花了一些时间写出来了,如图所示: 效果预览点这里:http://www.miaov.com/mi ... 
- jenkins启动失败,提示Starting Jenkins Jenkins requires Java8 or later, but you are running 1.7.0
			# 背景 centos安装jenkins后,先启动jenkins服务,结果报错如下: 但自己明明已经安装了java8的 # 解决方法 既然安装了java8的话,那么证明是jenkins启动的是还是用的 ... 
