hihocoder 1579(排列组合)
2024-09-08 14:11:43
题意
给出一个长度为n的字符串的sa数组,n<=1e5,问有多少种不同的字符串的sa数组正好是输入的sa数组(字符串每个位置都是小写字母)
分析
sa数组描述的是字符的大小关系,而不是确切的字符,所以我们考虑位置的逻辑关系
首先一定有$s[sa[i-1]]<=s[sa[i]]$
但是对于那些$rank[sa[i-1]+1]>rank[sa[i]+1]$的位置,必须有$s[sa[i-1]]<s[sa[i]]$
于是我们就知道输入的位置彼此间的大小关系,要么是<=,要么是<
问题就是求方案数了
设第一个数是$x_1$,以后每个数比前面数多加$x_i$,小于号位置的$x_i>=1$,小于等于号位置的$x_i>=0$,不妨设小于等于号有m个
那么利用隔板法有$x_1+x_2+...+x_n<=26+m$
但是这个不是等号,是小于等于号,我们要把它变成等于号
做法就是再补一个$x_(n+1)$,把不等号变成等号
最后的结果就是$C_{26+m}^n$
最新文章
- tornado和django的结合使用 tornado Server for django WSGI APP
- 【BZOJ 2154】Crash的数字表格
- iframe的用法
- Android UI系列-----EditText和AutoCompleteTextView
- Jquery如何获得<;iframe>;嵌套页面中的元素
- HTML兼容性设置
- MVC Razor模板引擎输出HTML或者生产HTML文件
- RxJava+Retrofit+MVP构建的App——聚合资讯
- MVC缓存的使用
- asp.net php asp jsp 301重定向的代码
- UVAlive 6833 Miscalculation 字符串处理
- android应用集成google登录
- Golang丰富的I/O 二----cgo版Hello World
- eclipse打开package explorer视图
- 浅谈深度优先和广度优先(scrapy-redis)
- C#中一种替换switch语句更优雅的写法
- MySQL索引的维护与优化——查找重复及冗余索引
- BZOJ 2434 阿狸的打字机(fail树)
- Android-AndroidManifest.xml默认启动的Activity(探索篇01)
- 润乾V4的最小化部署方式