洛谷1洛谷2,它们是一样的题目,手动滑稽

这一题我是想不出来,

但是我想吐槽一下坐我左边的大佬

大佬做题的时候,只是想了几分钟,拍了拍大腿,干脆的道:“这不是很显然吗!”

然后灵动地轻击键盘,不时抚弄头发,光速切紫题。

AC后笑眯眯地对我说,

你要是想的出来,我给你买一瓶2L可口可乐!不是在打广告~

我当然难以下手,但2L杀***水非常诱惑。

还是冥思苦想了一番,

大佬看着着急,就告诉了我状态定义,还笑着说,告诉你你也想不出方程。

我很生气,但身为蒟蒻又能怎样呢?

在大佬的不断提示下,我勉强把这题做了出来。

讲讲怎么做吧~

先看这题怎么样才算无解呢,

假设\(cnt[i]\)表示\(m\)个人中编号\(\ge i\)的个数。显然当\(cnt[i]>=n-i+1\)时无解。

大佬叫我这样定义状态\(f[i][j]\)表示剩下\(n-m\)个人中编号\(\ge i\)的人有\(j\)个。

所以,我们这么转移\(f[i][j]+=f[i+1][j-k]*C_{j}^{k}\)。

表示我们此时已经选了\(j-k\)人,再选\(k\)人的方案数。

注意事项:这是大佬的提醒~

因为方程是从\(i+1\)转移过来的,所以我们的\(i\)要倒过来枚举,答案显然是\(f[1][n-m]\)。

复杂度显然\(O(n^3)\),当然还要乘上数据组数。

上代码~

#include <bits/stdc++.h>
using namespace std;
typedef int _int;
#define int long long int n,m,mo,cnt[301],f[301][301];
int yh[301][301]; void pre()
{
for (int i=0;i<=n;++i) yh[i][0]=1;
for (int i=1;i<=n;++i) {
for (int j=1;j<=i;++j) {
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
yh[i][j]%=mo;
}
}
} _int main()
{
int T;cin>>T;
while (T--) {
memset(f,0,sizeof(f));
memset(cnt,0,sizeof(cnt));
int x,y,flag=0;
cin>>n>>m>>mo;
for (int i=1;i<=m;++i) {
cin>>x>>y;
++cnt[y];
}
for (int i=n;i;--i) {
cnt[i]+=cnt[i+1];
if (cnt[i]+i>n+1) {flag=1;break;}
}
if (flag) {puts("NO");continue;}
pre();
f[n+1][0]=1;int i,j,k;
for (i=n;i;--i)
for (j=0;j+i+cnt[i]<=n+1;++j)
for (k=0;k<=j;++k)
f[i][j]+=(f[i+1][j-k]*yh[j][k]),f[i][j]%=mo;
cout<<"YES "<<f[1][n-m]<<endl;
}
return 0;
}

洛谷 P2523 [HAOI2011]Problem c的更多相关文章

  1. 洛谷P2523 [HAOI2011]Problem c(计数dp)

    题面 luogu 题解 首先,显然一个人实际位置只可能大于或等于编号 先考虑无解的情况 对于编号为\(i\),如果确认的人编号在\([i,n]\)中数量大于区间长度,那么就无解 记\(S[i]\)表示 ...

  2. 洛谷$P2523\ [HAOI2011]\ Problem\ c$ $dp$

    正解:$dp$ 解题报告: 传送门$QwQ$ 首先港下不合法的情况.设$sum_i$表示$q\geq i$的人数,当且仅当$sum_i>n-i+1$时无解. 欧克然后考虑这题咋做$QwQ$. 一 ...

  3. 洛谷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} ...

  4. 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)

    传送门 我们考虑容斥,设$ans(a,b)=\sum_{i=1}^a\sum_{j=1}^b[gcd(a,b)==k]$,这个东西可以和这一题一样去算洛谷P3455 [POI2007]ZAP-Quer ...

  5. 洛谷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 ...

  6. 洛谷 P2519 [HAOI2011]problem a

    传送门 考虑转化为求最多说真话的人数 设$f(i)$表示排名前$i$的人中最多说真话的人的数量,考虑转移,如果由$j$转移而来,可以设$[j,i]$之间的人全都分数相等,那么式子就是$f[i]=f[j ...

  7. 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)

    题目描述 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入输出格式 输入格式: 第一行一个整数 ...

  8. 洛谷 P2522 [HAOI2011]Problem b (莫比乌斯反演+简单容斥)

    题目描述 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入输出格式 输入格式: 第一行一个整数 ...

  9. 洛谷$P$2522 $Problem\ b\ [HAOI2011]$ 莫比乌斯反演

    正解:莫比乌斯反演 解题报告: 传送门! 首先看到这个显然就想到莫比乌斯反演$QwQ$? 就先瞎搞下呗$QwQ$ $gcd(x,y)=k$,即$gcd(\left \lfloor \frac{x}{k ...

随机推荐

  1. JanusGraph的schema及数据建模

    每个JanusGraph都有一个schema,该schema由edge labels, property keys和vertex labels组成.JanusGraph的schema可以显式或隐式创建 ...

  2. 转:winform_webApiSelfHost及 OWIN WebAPI Service

    winform_webApiSelfHost 窗本构造函数中添加以下代码: var baseAddress = ConfigurationManager.AppSettings["baseA ...

  3. unity, UGUI Text fadeIn

    错误写法: Color color = m_text.GetComponent<Text> ().color;        Color startColor = new Color (c ...

  4. 统计MSSQL数据库中所有表记录的数量

    SELECT a.name as '表名', b.rows as '记录数' FROM sysobjects AS aINNER JOIN sysindexes AS b ON a.id = b.id ...

  5. Linux下查看分区UUID

    有两种方法: 1.#:blkid 2.ls -l /dev/disk/by-uuid/

  6. python学习代码

    #!/bin/python #example 1.1 #applay def function(a,b): print(a,b) def example1(): apply(function, (&q ...

  7. zabbix 监控如下内容

    我们使用zabbix做了如下的监控: 1.硬件监控. 通过SNMP来进行路由器交换机的监控(这些可以跟一些厂商沟通来了解如何做). 服务器的温度以及其他,可以通过IPMI来实现.当然如果没有硬件全都是 ...

  8. 自动添加需要编译的源文件Android.mk模板

    自动添加需要编译的源文件列表 添加第三方静态库.动态库的依赖   假设我们的项目依赖 libmath.a, libjson.a, libffmpeg.so 这几个第三方库文件,项目包含如下几个模块:a ...

  9. php 遍历静态html成文章列表

    准备 代码 <?php $root=__DIR__; //全站目录 function my($dir){ static $item_arr=array(); $a=scandir($dir); ...

  10. python requests.exceptions.ConnectionError

    今天遇到一个奇葩问题, 1.r.request.post(url) 2..print r. status_code 居然第一步就报错了,原因是url不正确,按道理应该可以走到第二步然后输入404的 i ...