题意

给定 \(n, k\) 和序列 \(b_{1\dots n}\),计数序列 \(a_{1\dots n}\) 使得 \(\forall i \in [1, n], \operatorname{mex}\limits_{j=1}^i\{a_j\}\in [b_i - k, b_i + k]\)。

数据范围:\(1\le b_i \le n \le 2000, 0\le k\le 50\)。

题解

永远做不出简单题。我是弱智。

考虑递推过程中维护 \(\operatorname{mex}\) 的变化,那么需要在每个 \(i\) 处决策 \(\operatorname{mex}\) 增加多少,那么考虑在某一个数变成小于 \(\operatorname{mex}\) 的位置再去决策它的具体值。记 \(f_{i, j, k}\) 表示前 \(i\) 个数,\(\operatorname{mex}\) 为 \(j\),有 \(k\) 个数大于当前的 \(\operatorname{mex}\) 的方案数。写一下转移:

\[f_{i, j, k} = f_{i-1, j, k-1} + (j-1)f_{i-1,j,k} + \sum\limits_{t=0}^{j-1}\sum\limits_{p}\binom{k+p}{p}{p\brace j-t-1}(j-t-1)!f_{i-1,t,k+p}
\]

发现状态数 \(n^2k\),转移怎么也不能做到 \(\mathrm O(1)\)。于是我就极限降智。

怎么优化呢?注意到比较恶心的是 \(p\),主要是我们虽然知道转移从 \(t\) 到 \(j\) 的过程中一定要用未决策的数去填满 \(t-j-1\) 个位置,但是不知道具体有几个数,怎么把这些数放进去。然后你发现与这边巨大多的式子形成鲜明对比的是你在把数延迟决策的时候机会什么都不干。于是你考虑改一改状态:\(g_{i,j,k}\) 表示前 \(i\) 个数,\(\operatorname{mex}\) 为 \(j\),大于当前 \(\operatorname{mex}\) 的数分为 \(k\) 类的方案数。于是转移就是:

\[g_{i, j, k} = (j + k)g_{i-1, j, k} + g_{i-1,j,k-1} + \sum\limits_{t=0}^{j-1}\binom{k + j - t - 1}{j - t - 1}(j - t - 1)!g_{i-1,t,k+j-t-1}
\]

这个转移随便拆一下做个前缀和就 \(\mathrm O(1)\) 了。

CF1608F MEX counting的更多相关文章

  1. 萌新笔记——Cardinality Estimation算法学习(二)(Linear Counting算法、最大似然估计(MLE))

    在上篇,我了解了基数的基本概念,现在进入Linear Counting算法的学习. 理解颇浅,还请大神指点! http://blog.codinglabs.org/articles/algorithm ...

  2. POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)

    来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS   Memory Limit: 65536 ...

  3. ZOJ3944 People Counting ZOJ3939 The Lucky Week (模拟)

    ZOJ3944 People Counting ZOJ3939 The Lucky Week 1.PeopleConting 题意:照片上有很多个人,用矩阵里的字符表示.一个人如下: .O. /|\ ...

  4. find out the neighbouring max D_value by counting sort in stack

    #include <stdio.h> #include <malloc.h> #define MAX_STACK 10 ; // define the node of stac ...

  5. 1004. Counting Leaves (30)

    1004. Counting Leaves (30)   A family hierarchy is usually presented by a pedigree tree. Your job is ...

  6. 6.Counting Point Mutations

    Problem Figure 2. The Hamming distance between these two strings is 7. Mismatched symbols are colore ...

  7. 1.Counting DNA Nucleotides

    Problem A string is simply an ordered collection of symbols selected from some alphabet and formed i ...

  8. Codeforces Round #381 (Div. 2)C. Alyona and mex(思维)

    C. Alyona and mex Problem Description: Alyona's mother wants to present an array of n non-negative i ...

  9. Codeforces 740C. Alyona and mex 思路模拟

    C. Alyona and mex time limit per test: 2 seconds memory limit per test: 256 megabytes input: standar ...

  10. uva 11401 Triangle Counting

    // uva 11401 Triangle Counting // // 题目大意: // // 求n范围内,任意选三个不同的数,能组成三角形的个数 // // 解题方法: // // 我们设三角巷的 ...

随机推荐

  1. Redis的自增也能实现滑动窗口限流?

    限流是大家开发之路上一定会遇到的需求.比如:限制一定时间内,接口请求请求频率:一定时间内用户发言.评论次数等等,类似于滑动窗口算法.这里分享一份拿来即用的代码,一起看看如何利用常见的 Redis 实现 ...

  2. Charlotte Holmes series

    Charlotte Holmes Novel The charactors are adorable. Jamie and Charlotte are a very cute couple. More ...

  3. EF Core 使用Azure App Service中的In-App MySQL服务

    Azure App Service 提供了一个应用内的MySQL,可以供测试.开发使用. 前提条件是需要使用Windows的操作系统. 创建完App Server 之后,只需要在设置下开启 MySQL ...

  4. C# 从0到实战 命名空间

    什么是命名空间 命名空间是C#为了解决类名冲突而产生的一种方案,通过特定的前缀来标识一个类,使得编程者可以在自己的命名空间中自由使用各种类名,这很类似于Java中的包. 一般新手学习C#都会使用一个 ...

  5. 为什么数据库project被做成了web开发啊啊——一个半小时实现增删查改

    昨天晚上去小破站上找了一点点~~亿点点~~资料,仔细研究了一下我们项目说明文档里的restful框架,发现可以直接用django_restful_framework. 天大的好消息啊!今天下午有三个小 ...

  6. Mysql Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘xx‘

    MySql执行分组sql报错: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated co ...

  7. RateLimiter使用

    1.maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava ...

  8. vue2项目中调取登录接口登录以后获取个人信息以后,储存在哪里,怎么在不同的页面展示想要的信息?

    在Vue2项目中,可以将个人信息存储在Vuex状态管理中或者浏览器的本地存储中,具体取决于项目的需求和规模. 1. Vuex状态管理 在Vuex中定义一个user模块,用于存储用户信息,可以在登录成功 ...

  9. ntp导致其他线程卡顿原因总结

    这个是在项目开发中遇到的一个比较严重的问题,第一影响到主界面的播放卡顿,第二影响到我这边线程同样卡顿,按道理来说两个没有数据交互的线程应该没有任何影响,改为detach模式也没用,最后定位到居然是单独 ...

  10. class(类)和构造函数(原型对象)

    构造函数和class的关系,还有面向对象和原型对象,其实很多人都会很困惑这些概念,这是第二次总结这些概念了,之前一次,没有class类,其实了解了构造函数,class也就很容易理解了 一. 构造函数和 ...