博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 4403 序列统计——转化成组合数的思路
阅读量:6673 次
发布时间:2019-06-25

本文共 783 字,大约阅读时间需要 2 分钟。

题目:

先说说自己的想法吧。

设f[ i ][ j ]表示当前在倒数第 i 个位置,当前和后面的最高的列(最大的数)是 j 的方案数。

考虑当前填0,则用f[ i-1][ j ]转移;当前填1,相当于把后面的都消去最底下一行,用f[ i-1 ][ j-1 ]转移。

所以f[ i ][ j ]=∑(k:0~j)f[ i-1 ][ k ]。然后矩阵优化。

结果发现 j 的范围达到1e9,也就是要建1e9*1e9的矩阵。于是萎了。

看TJ:

关键的思路可能在于发现随便选即可,之后排序。

没错,不用 +i 转换成升序也是可以这样转化的。很经典。

C( )里必须判断 if(n<m)return 0; !因为n%mod,m%mod时很容易传进n<m的参数!

#include
#include
#include
#define ll long longusing namespace std;const int mod=1e6+3;int T,n,m,l,r,jc[mod+5],jcn[mod+5];int pw(int x,int k){ int ret=1;while(k){
if(k&1)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=1;}return ret;}void init(){ jc[0]=1; for(int i=1;i
=0;i--)jcn[i]=(ll)jcn[i+1]*(i+1)%mod;}int C(int n,int m){ if(n

 

转载于:https://www.cnblogs.com/Narh/p/9261729.html

你可能感兴趣的文章
关于CountDownLatch控制线程的执行顺序
查看>>
plsql 乱码 注册表 修改文件
查看>>
Docker集群管理(三)—— docker swarm mode基础教程
查看>>
1.urlencoder和urldecoder的使用
查看>>
web移动端布局方式整理
查看>>
蛤玮学计网 -- 简单的判断ip
查看>>
如何解决div里面img图片下方有空白的问题?
查看>>
P3626 [APIO2009]会议中心
查看>>
防火墙
查看>>
Ubuntu下VIM使用指南
查看>>
QTREE5 - Query on a tree V——LCT
查看>>
spring mvc-使用Servlet原生API作为参数
查看>>
第13章 MySQL数据库与JDBC编程
查看>>
百度地图API使用记录
查看>>
linux docker
查看>>
增量式 爬虫
查看>>
第九周作业
查看>>
CefSharp的一些初始化操作
查看>>
使用Git Hooks实现开发部署任务自动化
查看>>
百度离线地图
查看>>