Solved:1

rank:249

E. Removal

dp i,j表示前i个数删除了j个且选择了第i个的答案

类似字符串的dp 预处理一下nex i_k即i后面k第一次出现的位置  就好转移了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + ; int s[];
int nex[][];
int now[];
ll dp[][]; int main()
{
int n, m, kk;
while(~scanf("%d%d%d", &n, &m, &kk))
{
memset(dp, , sizeof(dp));
for(int i = ; i <= n; i++) scanf("%lld", &s[i]);
for(int i = ; i <= kk; i++) now[i] = n + ; for(int i = n; i >= ; i--)
{
for(int j = ; j <= kk; j++) nex[i][j] = now[j];
now[s[i]] = i;
} dp[][] = ; //dp[0][0] = 1;
for(int i = ; i <= n; i++)
{
for(int j = ; j <= m; j++)
{
if(!dp[i][j]) continue;
for(int k = ; k <= kk; k++)
{
int t = nex[i][k];
if(t == n + ) continue;
if(t - i + j - > m) continue;
(dp[t][t - i + j - ] += dp[i][j]) %= mod;
}
}
} ll ans = ;
for(int i = ; i <= n; i++)
if(i - n + m >= )
(ans += dp[i][i - n + m]) %= mod;
printf("%lld\n", ans);
}
return ;
}

牛客多校Round 1的更多相关文章

  1. 牛客多校Round 10

    咕咕咕.... 去烽火台和兵马俑了

  2. 牛客多校Round 9

    Solved:1 rank:112 E. Music Game 题解说有个非简化的原题 bzoj4318 #include <bits/stdc++.h> using namespace ...

  3. 牛客多校Round 8

    Solved:2 rank:164 签了两个oeis,但这样真的开心嘛

  4. 牛客多校Round 6

    Solved:3 rank:156 J. Heritage of skywalker 学习一下nth_element 可以o (n)的找出前多少大的元素 #include <bits/stdc+ ...

  5. 牛客多校Round 5

    Solved:3 rank:195 F. take 官方题解:小 A 在打开第 i 个箱子后会交换手中的钻石和第 i 个箱子中的钻石 当且仅当第 i个箱子的钻石是前 i 个箱子打开后出现的所有钻石里最 ...

  6. 牛客多校Round 4

    Soved:3 rank:133 A.Ternay String 欧拉降幂一下 但是反复求phi会超时 但mod是同一个就可以记忆化一下 #include <bits/stdc++.h> ...

  7. 牛客多校Round 3

    Solved:2 rank:306 跑路场..... A.PACM team 简单背包记录路径都写挂 退役算了 #include <bits/stdc++.h> using namespa ...

  8. 牛客多校Round 2

    Solved:3 rank:187 H.travel 题意:给一颗带有点权的树 找三条不相交的链 使得点权最大 题解:使用树形DP dp[x][i][0/1] 表示x节点选择i条链 有没有经过x的链 ...

  9. 2019牛客多校第一场 I Points Division(动态规划+线段树)

    2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...

随机推荐

  1. 获取Linux磁盘分区的UUID

    在设置fstab自动挂载时,需要填写如下的信息: # <file system> <mount point> <type> <options> < ...

  2. vim note(5)

    .vimrc 的设置 $HOME/.vimrc 的普通设置,例如以下. set nocompatible "" not compatible with VI "" ...

  3. python爬虫【第1篇】

    一.文件读写 1.打开文件 # 以读文件模式代开new.txt f=open(r"c:\new.txt",“r”) f=open("c:\new.txt",“r ...

  4. 局部优化与整体效果 新增时间>节省时间 权衡利弊

    原代码 from selenium import webdriverimport requests,timeurl_l=[]with open('DISTINCT_url.txt', 'r', enc ...

  5. (十七)LU分解

    #encoding=utf-8 import numpy as np # 输入数据 # a用来记录x的系数 a=[[2.0,2.0,3.0],[4.0,7.0,7.0],[-2.0,4.0,5.0]] ...

  6. 逻辑频道号---DVB NIT LCN

    先介绍NIT,NIT描述如下: 有一点要注意,NIT是对大网的描述,即NIT并不是描述当前的流,而是描述大网的某些或者全部流.如下图,TS流描述1-6共对6个频点不同的TS流进行了描述,具体对哪一个流 ...

  7. 使用nginx搭建媒体点播服务器

    使用nginx搭建媒体点播服务器 最新由于兴趣,对ubuntu和安卓上的视频点播直播等应用比较感兴趣,所以在vmware的虚拟机里面搭建了一个视频点播网站,参考了fengzhanhai的文章Nginx ...

  8. Postman发送GET请求带中文

    当使用Postman进行GET请求,并且请求参数里携带中文得时候,会请求失败 这时,需要对GET请求参数携带的中文进行编码即可请求成功

  9. RHEL5.6更新yum源

    RHEL5.6更新yum源记录,2017年2月20日 root用户切换目录至:/etc/yum.repos.d/ [root@localhost yum.repos.d]# pwd /etc/yum. ...

  10. 287 Find the Duplicate Number 寻找重复数

    一个长度为 n + 1 的整形数组,其中的数字都在 1 到 n 之间,包括 1 和 n ,可知至少有一个重复的数字存在.假设只有一个数字重复,找出这个重复的数字.注意:    不能更改数组内容(假设数 ...