洛谷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 ...
随机推荐
- Luogu 4449 于神之怒加强版
挺套路的题,然而一开始还是想错了…… $\sum_{i = 1}^{n}\sum_{j = 1}^{m}gcd(i, j) ^ {k} = \sum_{T = 1}^{min(n, m)}\left ...
- C程序设计语言(2)文摘
第一章 导言 1.1 入门 1.2 变量与算术表达式 1.3 for语句 1.4 符号常量 1.5 字符输入输出 #include "stdafx.h" main(int argc ...
- swift 学习之UISegmentedControl
//创建分段控件的标题 let titileArray:[String] = ["点评", "哪里逃"] let segment ...
- Alpha冲刺 - (6/10)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 基于ssm框架的前后端交互测试,结合 ...
- java并发编程实战:第十三章----显示锁
一.Lock与ReentrantLock Lock接口中定义了一种无条件.可轮询的.定时的以及可中断的锁获取操作,所有加锁和解锁的方法都是显式的. 1 public interfece Lock 2 ...
- 用 Servlet 进行上载的原理和实现
Servlet 是用 Java 编写的.协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案.使用 Servlet 可以方便地处理在 HTML 页面表单中提 ...
- 基于JWT的web api身份验证及跨域调用实践
随着多终端的出现,越来越多的站点通过web api restful的形式对外提供服务,很多网站也采用了前后端分离模式进行开发,因而在身份验证的方式上可能与传统的基于cookie的Session Id的 ...
- Flask测试和部署
一 蓝图Blueprint 为什么学习蓝图? 我们学习Flask框架,是从写单个文件,执行hello world开始的.我们在这单个文件中可以定义路由.视图函数.定义模型等等.但这显然存在一个问题:随 ...
- 开源日志收集Exceptionless简单使用
这两天在研究一个开源的日志收集工具Exceptionless 官网地址:https://exceptionless.com/GitHub地址:https://github.com/exceptionl ...
- windows phone 8.0 app 移植到windows10 app笔记
8.0 public class Convisibility : IValueConverter { public object Convert(object value, Type targetTy ...