【模拟8.01】matrix(DP杂题,思维题)
很神的题,感谢lnc大佬的指点。
先设1-LL[i]统称左区间,RR[i]-m为右区间
用L[i]统计从1-i列,出现的左区间端点的前缀和,R[i]是右区间....
f[i][j]中j表示当前在第i列,右区间的左端点(RR[i])到i存在的1的个数,总体表示当前方案数。
所以,我们分几种情况
两种是直接转移的
f[i+1][j]=f[i][j]表示i向右移动但j不变方案转移
f[i+1][j+1]=f[i][j]*(r[i+1]-j)表明又选了一个,当前新的1可以从r[i+1](即右区间的个数)-j转移
一种是用排列.......
f[i][j]=f[i][j]*A(i-j-L[i-1],L[i]-L[i-1])
表示当前与上步操作中多出的区间是L[i]-L[i-1],这是必须填上1的
i-j-L[i-1]表示最多放的,又因为顺序不定,所以是排列......
1 #include<iostream>
2 #include<cstdio>
3 #include<string>
4 #include<algorithm>
5 #include<cmath>
6 #include<vector>
7 #include<map>
8 #include<cstring>
9 #define int long long
10 #define MAXN 3010
11 #define mod 998244353
12 using namespace std;
13 int jie[MAXN],ni[MAXN],ni_c[MAXN];
14 int f[MAXN][MAXN];
15 int A(int x,int y)
16 {
17 if(y==0)return 1;
18 // printf("x=%lld x-y=%lld %lld %lld\n",x,x-y,jie[x],ni_c[x-y]);
19 return jie[x]*ni_c[x-y]%mod;
20 }
21 int n,m;
22 int l[MAXN],r[MAXN];
23 signed main()
24 {
25 scanf("%lld%lld",&n,&m);
26 jie[0]=1; ni[0]=1; ni_c[0]=1;
27 jie[1]=1; ni[1]=1; ni_c[1]=1;
28 for(int i=2;i<=m;++i)
29 {
30 jie[i]=(jie[i-1]*i)%mod;
31 //printf("jie[%lld]=%lld\n",i,jie[i]);
32 ni[i]=(mod-mod/i)*ni[mod%i]%mod;
33 ni_c[i]=(ni_c[i-1]*ni[i])%mod;
34 }
35 for(int i=1;i<=n;++i)
36 {
37 int x,y;
38 scanf("%lld%lld",&x,&y);
39 l[x]++;r[y]++;
40 }
41 for(int i=1;i<=m;++i)
42 {
43 l[i]+=l[i-1];
44 r[i]+=r[i-1];
45 }
46 f[1][0]=1;
47 for(int i=1;i<=m;++i)
48 {
49 for(int j=0;j<=r[i];++j)
50 {
51 if(l[i]-l[i-1]>i-j-l[i-1])break;
52 f[i][j]=(f[i][j]*A(i-j-l[i-1],l[i]-l[i-1]))%mod;
53 f[i+1][j]+=f[i][j];
54 f[i+1][j+1]+=f[i][j]*(r[i+1]-j)%mod;
55 //printf("f[%lld][%lld]=%lld\n",i,j,f[i][j]);
56 }
57 }
58 printf("%lld\n",f[m][n]);
59 }
【模拟8.01】matrix(DP杂题,思维题)的更多相关文章
- BZOJ 2734 洛谷 3226 [HNOI2012]集合选数【状压DP】【思维题】
[题解] 思维题,看了别人的博客才会写. 写出这样的矩阵: 1,3,9,... 2,6,18,... 4,12.36,... 8,24,72,... 我们要做的就是从矩阵中选出一些数字,但是不能选相邻 ...
- 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities
第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...
- Codeforces 1137D - Cooperative Game - [交互题+思维题]
题目链接:https://codeforces.com/contest/1137/problem/D 题意: 交互题. 给定如下一个有向图: 现在十个人各有一枚棋子(编号 $0 \sim 9$),在不 ...
- AT2386 Colorful Hats (乱搞题,思维题)
分情况讨论的神题... max不等于min + 1 或者不等于min,这种情况显然不存在. 如果都等于一个数 有两种情况: 互相独立,那么a[i]肯定==n-1 有相同的,那么a[i]一定不是独立的. ...
- 贪心/构造/DP 杂题选做Ⅱ
由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 ...
- 贪心/构造/DP 杂题选做Ⅲ
颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...
- 思维题练习专场-DP篇(附题表)
转载请注明原文地址http://www.cnblogs.com/LadyLex/p/8536399.html 听说今年省选很可怕?刷题刷题刷题 省选已经结束了但是我们要继续刷题刷题刷题 目标是“有思维 ...
- [Hdu-5155] Harry And Magic Box[思维题+容斥,计数Dp]
Online Judge:Hdu5155 Label:思维题+容斥,计数Dp 题面: 题目描述 给定一个大小为\(N*M\)的神奇盒子,里面每行每列都至少有一个钻石,问可行的排列方案数.由于答案较大, ...
- [SHOI2007] 书柜的尺寸 思维题+Dp+空间优化
Online Judge:Luogu-P2160 Label:思维题,Dp,空间优化 题面: 题目描述 给\(N\)本书,每本书有高度\(Hi\),厚度\(Ti\).要摆在一个三层的书架上. 书架的宽 ...
- dp杂题(根据个人进度选更)
----19.7.30 今天又开了一个新专题,dp杂题,我依旧按照之前一样,这一个专题更在一起,根据个人进度选更题目; dp就是动态规划,本人认为,动态规划的核心就是dp状态的设立以及dp转移方程的推 ...
随机推荐
- 2020 ICPC EC Final西安现场赛游记
也不知道从何说起,也不知道会说些什么,最想表达的就是很累很累. 从第一天去的时候满怀希望,没什么感觉甚至还有一些兴奋.到后来一直在赶路,感觉很疲惫,热身赛的时候觉得马马虎虎,导致热身赛被咕.然后教练就 ...
- Java on Visual Studio Code的更新 – 2021年4月
杨尧今 from Microsoft VS Code Java Team 欢迎来到这一期的VS Code Java更新.又是一个忙碌而富有成效的月份. Java调试器和Java测试扩展获得了新功能.在 ...
- 记一次golang内存泄露
记一次golang内存泄露 最近在QA环境上验证功能时,发现机器特别卡,查看系统内存,发现可用(available)内存仅剩200多M,通过对进程耗用内存进行排序,发现有一个名为application ...
- ES系列(五):获取单条数据get处理过程实现
前面讲的都是些比较大的东西,即框架层面的东西.今天咱们来个轻松点的,只讲一个点:如题,get单条记录的es查询实现. 1. get语义说明 get是用于搜索单条es的数据,是根据主键id查询数据方式. ...
- MakeCode图形编程应用在micro:bit上的多工性能实测
1. 简述 本文不涉及对测试中所用到的设备或软件的推广. micro:bit 是一款由英国广播电视公司(BBC)为青少年编程教育设计,并由微软,三星,ARM,英国兰卡斯特大学等合作伙伴共同完成开发的微 ...
- Build 2021 :正式发布.NET 6 Preview4
微软在不断推进.NET 6的可用性,昨晚的Build 2021大会上发布了Preview4, 这是一个很大的版本更新,带来大量的功能,以及接近最终的产品交付质量,不过,这并不意味着可以在生产环境使用了 ...
- [DB] MySQL 索引分类
按数据结构 B树索引 数据位于叶子节点,到任何一个叶子节点的距离相同,一般不超过3-4层 B+树索引:每个叶子节点除了数据还存放前后叶子节点的指针,方便快速检索,是InnoDB采用的索引结构 Hash ...
- 010.Ansible_palybook 循环语句
Ansible循环语句 1 简介 我们在编写playbook的时候,不可避免的要执行一些重复性操作,比如指安装软件包,批量创建用户,操作某个目录下的所有文件等.正如我们所说,ansible一门简单的自 ...
- SpringMVC MVC 架构模式
MVC 架构模式 MVC(Model.View 和 Controller)是一种架构模式,它是按照职责划分的思想将系统操作分为三个模块进行处理,每个模块负责一个职责,而且模块之间可以相互交互通信,共同 ...
- 重新整理 .net core 实践篇—————配置系统之军令状[七](配置文件)
前言 介绍一下配置系统中的配置文件,很多服务的配置都写在配置文件中,也是配置系统的大头. 正文 在asp .net core 提供了下面几种配置文件格式的读取方式. Microsoft.extensi ...