洛谷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;
}

最新文章

  1. ASP.NET MVC5 与EF6学习系列
  2. 【个人使用.Net类库】前言
  3. 关于搭建haddoop分布式系统的全部过程复习
  4. (转)Excel导出及数据格式化处理
  5. Win7无法访问NAS或Samba服务器解决之道 转
  6. TreePuzzle 一点感想
  7. 2016&quot;百度之星&quot; - 资格赛(Astar Round1) Problem B
  8. JavaSE笔记-泛型
  9. MySQL/MariaDB的锁
  10. whistle
  11. BAT:通过连接符处理判断OR的关系
  12. docker-compose docker启动工具,容器互联
  13. spring--多人开发,模块化配置
  14. SOA的理解
  15. iptables学习笔记_____摘自朱双印个人日志 ____http://www.zsythink.net/
  16. as2 attachMovie库影片无法获取其影片里面的对象或方法
  17. Nginx的虚拟主机
  18. 存储过程定义多个游标多个begin
  19. 简单日历插件jquery.date_input.pack
  20. java Cookie 获取历史记录列表(三)

热门文章

  1. Failed to Stop or Restart Nginx Server Through Serevice Command(nginx进程不能停止重启)
  2. iOS开发-Swift获取手机设备信息(UIDevice)
  3. 8.1.1 Service的生命周期
  4. C++ Primer Plus的若干收获--(二)
  5. Atitit.跨语言&#160;&#160;文件夹与文件的io操作集合&#160;&#160;草案
  6. 学习笔记 - Unity是如何将你的项目发布到如此多的平台的?
  7. MAC下一些常用的命令行
  8. 【Mac + Appium学习(一)】之安装Appium环境前提准备
  9. IIS下PHP的ISAPI和FastCGI比较
  10. I.MX6 Ethernet MAC (ENET) MAC Address hacking