题目描述

魔王撒旦为了建立魔物的乐土,率领亚多拉玛雷克、艾谢尔、路西菲尔、以 及马纳果达这四位恶魔大元帅进攻人类世界。然而此时手持圣剑的勇者艾米莉亚出现了。
  战败的魔王逃跑时穿越到了地球,以真奥贞夫的身份过着打工族的生活。最近真奥贞夫手头有点紧,他接到一个待遇不错的任务,但是却没有时间。无奈之下,他只能找到可靠的 YxuanwKeith 来帮忙。 然而王导最近忙于筹拍宣传片,抽不出时间,于是 YxuanwKeith 又找到了你来替他完成这个工作。YxuanwKeith 帮忙的工作是为一个大赛设计分队方式。

这个比赛有 N 个人参加,我们可以给这 N 个人分任意数量(不超过N)的队伍,相同队伍的人用相同数字来表示。如果有多种表示,我们认为字典序最小的表示才是有效的。
  由于组队的情况实在是太多了,今年大赛组委会决定在比赛的第 i 天采用所有序列中字典序第i小的分队方式。
  现在组委会会向你询问一个序列,希望你能告诉他们这个序列的分队方式会在哪一天被采用。由于答案可能会很大,所以组委会只关心对1000007取模后的结果。

输入格式

第一行,一个整数 N 表示参赛人数。
  第二行,N 个整数,表示询问的分队方式的序列。

输出格式

一行,一个整数表示这种方式会在第几天被采用。答案对 1,000,007 取模。
输入样例
  3
  1 2 2
输出样例
  4
提示
  比赛各天的分队情况如下:第一天:1,1,1第二天:1,1,2第三天:1,2,1第四天:1,2,2第五天:1,2,3
  对于100%的数据,N ≤10000,数据保证询问的数列是一个有效的序列。

分析

先来看一下什么是合法的序列。

因为字典序最小,所以序列的前缀最大值每次最多上升1(不然就可以将它替换成更小的编号)

然后我们来看如何计算字典序

考虑一下与原序列s有相同前缀,但在i位开始与s不同的序列的个数

设s在i位置的数为a[i],前缀的最大值为mx

对于在位置i的数大于a[i]的序列,又因为前缀相同,所以它们字典序肯定比s大

对于在位置i的数等于a[i]的数列。。。。。。不是说了在i位开始不同的吗。。直接递归到i+1位计算贡献就好了。

对于在位置i的数小于a[i]的序列,又因为前缀相同,所以它们字典序肯定比s小,这些都可以产生贡献

而这些序列的性质是前缀最大值为mx,长度为n-i+1,第i位小于a[i]。

直接设dp式子dp[i][j]表示前缀最大值为j,剩下i位的不同方案个数

那么这些序列的贡献就是$(a[i]-1)*dp[n-i][mx]$

考虑怎么求dp式子

那么每次就有更新最大值与不更新最大值两种方案

$$dp[i][j]=j \times dp[i-1][j]+dp[i-1][j-1]$$

处理出$n^2$这个数组然后对原序列一位一位的去计算贡献$(a[i]-1)*dp[n-i][mx]$就好了

当然也可以直接dp需要的值,即在dp的时候就把(a[i]-1)放进去(这个无法用语言表达,具体看代码吧

Code

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
const int mod=1e6+;
int n,mx,nw,f[][maxn];
int main()
{
scanf("%d",&n);
for(int i=,a;i<=n;nw=!nw,i++)
{
scanf("%d",&a);
for(int j=i;j>=;j--)
f[nw][j]=(f[!nw][j-]+1ll*f[!nw][j]*j+(j==mx)*(a-))%mod;
mx=max(mx,a);
}
int ans=;
for(int i=;i<=n;i++)ans=(ans+f[!nw][i])%mod;
printf("%d\n",ans);
}

【CSP膜你赛】大逃亡的更多相关文章

  1. 【CSP膜你赛】ATM

    题目描述 小沈阳在小品里说过:“人生最痛苦的事情是人死了,钱还没花掉”. 于是小宋(80 岁)决定要将所有的储蓄从 ATM 机中取出花光. 小宋忘记 了她有多少存款(银行卡密码她是记得的 2333), ...

  2. 【CSP膜你赛】柠檬的密码(manacher 二分 单调性 st表)

    题目描述 Lemon觉得他需要一个复杂的密码来保证他的帐号的安全.他经过多日思考,决定使用一个长度为奇数的回文串来作为他的密码.  但是这个回文串太长了,Lemon记不住,于是Lemon决定把它记在本 ...

  3. cdcqの省选膜你赛

    cdcqの省选膜你赛 比赛当天因为在杠hnoi2016的大数据结构没有参加,今天补了一下.挺好玩的虽然不看一句话题意的话真的卡读题 此生无悔入东方,来世愿生幻想乡 2651. 新史「新幻想史 -现代史 ...

  4. hdu.1429.胜利大逃亡(续)(bfs + 0101011110)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  5. 胜利大逃亡[HDU1253]

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  6. hdu 1429 胜利大逃亡(续)

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王 ...

  7. Hdu 1429 胜利大逃亡(续) 分类: Brush Mode 2014-08-07 17:01 92人阅读 评论(0) 收藏

    胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Subm ...

  8. HDOJ 1429 胜利大逃亡(续)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  9. hdu 1429 胜利大逃亡(续)(bfs+位压缩)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

随机推荐

  1. Java自学-接口与继承 重写

    Java 重写方法 子类可以继承父类的对象方法 在继承后,重复提供该方法,就叫做方法的重写 又叫覆盖 Override 步骤 1 : 父类Item 父类Item有一个方法,叫做effect packa ...

  2. Java 之 Set 接口

    一.Set 概述 java.util.Set 接口继承 collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Collection 接口进行功能上的扩充,只是比 Co ...

  3. XML简述

    XML简述 本文主要内容都是在中国大学MOOC上学习的,这里做个记录. 课程:Java核心技术(进阶),华东师范大学 陈良育老师 感谢陈良育老师,在他的慕课上受益匪浅. XML基本概念 XML(eXt ...

  4. 虚拟机-VMware小结

    1.网卡的3种模式 桥接模式:虚拟机=物理机器,连接物理网卡,虚拟ip设置物理网卡的网段和网管.可上网. NAT模式:虚拟机把物理机器当做路由器,虚拟ip网段ip自动获取.可上网. https://w ...

  5. MySQL安装和使用

    1.MySQL安装: 1).到MySQL官网https://dev.mysql.com/downloads/installer/,下载MySQL 5.7版本:(注:现在官网上最新版本已经变成8.0.1 ...

  6. django memcached/redis缓存 =====缓存session

    全站使用 例如 博客等缓存,通过中间件实现全站缓存. 加缓存中间件,那么多中间件加在什么位置? 请求时:缓存加在中间件里的最后一个,比如一次经过1.2.3.4中间件,加在4 返回事:缓存加在中间件里的 ...

  7. Solidity合约中的整数溢出漏洞事件

    事件 2018年4月23日 BEC 一夜被偷64亿 2018年4月25日 SMT 再爆类似漏洞,火币Pro和OKEx相继暂停了SMT交易 2018年4月25日 BEC.SMT现重大漏洞,这8个智能合约 ...

  8. mysql免安装版配置和一些常见问题

    博客原文点我 今天在Windows Server 2003下安装mysql,遇到不少问题.之前在另外两台服务器安装的时候也遇到了几个问题,最后找到不少文章解决了,记录一下. 所有版本都是免安装的32和 ...

  9. Unity 渲染教程余下

    可能来源于(英文):https://catlikecoding.com/unity/tutorials/ Unity渲染教程(一):矩阵           http://gad.qq.com/pro ...

  10. php原型模式(prototype pattern)

    练练练,计划上午练完创建型设计模式. <?php /* The prototype pattern replicates other objects by use of cloning. Wha ...