[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 ...
随机推荐
- python自定义翻页配置
1.创建pager.py文件,针对翻页进行函数书写 class PageInfo(object): # current_page 当前页数 # all_count 所有行 # per_page 每页的 ...
- SpringPlugin-Core在业务中的应用
前言 一直负责部门的订单模块,从php转到Java也是如此,换了一种语言来实现订单相关功能.那么Spring里有很多已经搭建好基础模块的设计模式来帮助我们解耦实际业务中的逻辑,用起来非常的方便!就比如 ...
- Serverless 的价值
作者 | 许晓斌 阿里云高级技术专家 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复 入门 ,即可获取 Serverless ...
- 题解 「BZOJ2137」submultiple
题目传送门 题目大意 给出 \(M,k\) ,求出 \[\sum_{x|M}\sigma(x)^k \] 给出 \(P_i\),满足 \(n=\prod_{i=1}^{n}a_i^{P_i}\),其中 ...
- 洛谷3119 草鉴定(tarjan)
题目大意 约翰有\(n\)块草场,编号\(1\)到\(n\),这些草场由若干条单行道相连.奶牛贝西是美味牧草的鉴赏家,她想到达尽可能多的草场去品尝牧草. 贝西总是从\(1\)号草场出发,最后回到\(1 ...
- jenkins容器内安装python3
前言 很多小伙伴可能在考虑 jenkins 拉取了 github 上的代码后,发现还越少 python3 环境,那能怎么办呢? 咨询了一位运维朋友给我的答案是,将 python3 挂载到容器工作目录上 ...
- Spark解决SQL和RDDjoin结果不一致问题(工作实录)
问题描述:DataFrame的join结果不正确,dataframeA(6000无重复条数据) join dataframeB(220条无重复数据,由dataframeA转化而来,key值均源于dat ...
- JavaScript中的函数、参数、变量
高中大学数学很差,学JavaScript,发现根本不理解其中的函数.参数.变量等概念. 李永乐老师教学视频:<高三数学复习100讲>函数 bilibili.com/video/av5087 ...
- AIApe问答机器人项目Scrum Meeting博客汇总
荡起双桨 Scrum Meeting 博客汇总 一.Alpha阶段 AIApe问答机器人Scrum Meeting 4.23 AIApe问答机器人Scrum Meeting 4.25 AIApe问答机 ...
- [对对子队]会议记录5.22(Scrum Meeting9)
今天已完成的工作 梁河览 工作内容:修改第一到九关新手引导,修复关卡选择bug 相关issue:优化初步导出版本 相关签入:fix:修改第一关到第九关的新手引导和地图场景的bug 马嘉 ...