[luogu5204]Train Tracking 2
考虑一个位置的上界,即$bi=min(c_{i-k+1},c_{i-k+2},……,ci)$,那么每一个位置有两种方式:1.达到上界;2.未达到上界
那么可以将权值相同的ci和bi提出来,由于权值不同的ci是独立的,因此直接将每一个的方案数乘起来即可
提出来以后,问题转化为每一个bi可以覆盖提出来的ci的一段区间,然后覆盖整个区间的方案数,由于这个区间的左右端点都不下降,因此可以用f[i][j]表示前i个bi恰好覆盖了前j个ci的方案数,转移为$f[i][j]=f[i-1][j]*(C-1)+(j==ri)*\sum_{k=li-1}^{ri}f[i-1][j]$
容易发现对于大部分的f[j]都只乘上了一个$C-1$,而仅有ri要特殊处理,这个东西可以用线段树来维护,但同时发现li和ri不断递增,所以只需要维护一个s表示当前区间内的和即可

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 #define mod 1000000007
5 multiset<int>s;
6 map<int,vector<int> >m1,m2;
7 map<int,vector<int> >::iterator it;
8 int n,m,b[N],c[N],f[N];
9 int ksm(int n,int m){
10 if (!m)return 1;
11 int s=ksm(n,m>>1);
12 s=1LL*s*s%mod;
13 if (m&1)s=1LL*s*n%mod;
14 return s;
15 }
16 int main(){
17 scanf("%d%d",&n,&m);
18 for(int i=1;i<=n-m+1;i++){
19 scanf("%d",&c[i]);
20 c[i]=mod-6-c[i];
21 }
22 for(int i=1;i<=n;i++){
23 if (i<=n-m+1)s.insert(c[i]);
24 if (m<i)s.erase(s.find(c[i-m]));
25 b[i]=(*s.begin());
26 }
27 for(int i=1;i<=n-m+1;i++)m1[c[i]].push_back(i);
28 for(int i=1;i<=n;i++)m2[b[i]].push_back(i);
29 int ans=1;
30 for(it=m1.begin();it!=m1.end();it++){
31 int x=(*it).first,tag=1,s=1;
32 f[0]=1;
33 for(int i=1;i<=m1[x].size();i++)f[i]=0;
34 for(int i=0,j=0,k=0;i<m2[x].size();i++){
35 while ((j<m1[x].size())&&(m1[x][j]<=m2[x][i]-m))s=(s+mod-1LL*f[j++]*tag%mod)%mod;
36 while ((k<m1[x].size())&&(m1[x][k]<=m2[x][i]))s=(s+1LL*f[++k]*tag)%mod;
37 tag=tag*(x-1LL)%mod;
38 f[k]=(f[k]+1LL*s*ksm(tag,mod-2))%mod;
39 s=1LL*s*x%mod;
40 }
41 ans=1LL*tag*f[m1[x].size()]%mod*ans%mod;
42 }
43 printf("%d",ans);
44 }
[luogu5204]Train Tracking 2的更多相关文章
- P5204 [USACO19JAN]Train Tracking 2
P5204 [USACO19JAN]Train Tracking 2 毒毒题,对着嘤文题解看了贼久 首先考虑此题的一个弱化版本:如果输入的所有\(c_i\)相等怎么做 现在假设有\(len\)个数,取 ...
- [USACO19JAN]Train Tracking 2——神仙结论题+DP
原题链接 orz xzz巨佬 首先发现一个结论:两个相邻的\(c\)值如果不相同的话,就可以固定某个位置的值了 这启示我们把连续且相等的\(c\)给单独拿出来看,也就是对于一些\(c_i=c_{i+1 ...
- [USACO19JAN]Train Tracking 2 P
拿到本题后,可以观察到一个性质,如果出现了 \(c_i \ne c_{i + 1}\) 那么我们一定可以确定一个位置的值,这启示着我们将 \(c_i\) 相同的部分单独拿出来考虑再将最后的答案合并.于 ...
- [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
[源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...
- [TensorBoard] Train and Test accuracy simultaneous tracking
训练时的实时状态跟踪的重要性 不言而喻. [Tensorboard] Cookbook - Tensorboard 讲解调节更新频率 直接上代码展示: import numpy as np impo ...
- (转)CVPR 2016 Visual Tracking Paper Review
CVPR 2016 Visual Tracking Paper Review 本文摘自:http://blog.csdn.net/ben_ben_niao/article/details/52072 ...
- 论文笔记之:Fully-Convolutional Siamese Networks for Object Tracking
gansh Fully-Convolutional Siamese Network for Object Tracking 摘要:任意目标的跟踪问题通常是根据一个物体的外观来构建表观模型.虽然也取得了 ...
- 论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理 ...
- 论文笔记:Learning Attribute-Specific Representations for Visual Tracking
Learning Attribute-Specific Representations for Visual Tracking AAAI-2019 Paper:http://faculty.ucmer ...
随机推荐
- JavaScript数组 几个常用方法
前言 数组方法有太多了,本文记录一些本人容易记错的一些数组方法,用于巩固及复习. 后续会慢慢的将其他数组方法添加进来. 善用数组方法可以使数据处理变的优雅且简单. 那下面让我们开始吧: filter( ...
- bzoj2242,洛谷2485----SDOI2011计算器(exgcd,qsm,bsgs模板)
就是一道模板题! 这里再强调一下 BSGS 考虑方程\(a^x = b \pmod p\) 已知a,b,p\((2 \le p\le 10^9)\),其中p为质数,求x的最小正整数解 解法: 注意到如 ...
- Tomcat 源码环境搭建
Tomcat 源码搭建 下载源码 下载地址 :https://tomcat.apache.org/download-80.cgi#8.5.35 下载之后解压缩 导入Idea 添加pom.xml文件 & ...
- Apache Common-collection 反序列化利用链解析--TransformedMap链
Apache Common-collection 反序列化利用链解析 TransformedMap链 参考Java反序列化漏洞分析 - ssooking - 博客园 (cnblogs.com) poc ...
- windows右键菜单自动打包发布nuget,没有CI/CD一样方便!
构建现代的 .Net 应用离不开 Nuget 的支持,而快速打包 Nuget 成了提高生产率的有效方法.没有CI/CD?来试试使用windows右键菜单吧 先看右键效果图 有时候我们可能没有CI/CD ...
- 免费 CDN 玩法 —— 文件一键上传到 NPM
前言 unpkg.jsdelivr 等站点可加速 NPM 包文件,适合作为个人网站或演示案例的免费 CDN. 虽然上传文件到 NPM 很简单,创建 package.json 然后 npm publis ...
- 6月8日 Scrum Meeting
日期:2021年6月8日 会议主要内容概述: 确定6.9日下午两点到五点集中对接 初步确定主题配色和echarts默认图表颜色 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作 ...
- c语言编程基础入门必备知识
数据类型 基本数据类型 类型名称说明char字符类型存放字符的ASCII码int整型存放有符号整数short短整型存放有符号整数long长整型存放有符号整数long long存放有符号整数float单 ...
- 洛谷 P3232 [HNOI2013]游走
链接: P3232 题意: 和上次考试 T4 的简化且无修改一样,经典图上高斯消元求期望. 分析: 要求出每个点的期望出发次数 \(f_i\),每个点度数为 \(d_i\),有 \[f1=\sum\d ...
- CPU使用率和平均负载
转载: https://mp.weixin.qq.com/s?__biz=MzU4NzU0MDIzOQ==&mid=2247487782&idx=3&sn=3f04bb053d ...