当前位置: 首页 > news >正文

CF1810G The Maximum Prefix

原本以为又是格路计数,结果是对每个长度都要计数,没法优化。

\(f_{i,j,k}\) 表示前 \(i\) 个数,当前前缀和为 \(j\),最大前缀和为 \(k\),则状态数为 \(O(n^3)\),转移 \(O(1)\)

这个状态不是很好优化,最大前缀和很烦。考虑能否钦定。

\(f_{i,j}\)\(i\) 个前缀和距离钦定的 \(maxpre\) 还差为 \(j\) 的贡献和。发现还需要一维记录之前是否达到过 \(maxpre\)

于是有思路 \(f_{i,j,0/1}\)。转移方程为:

\[f_{0,j,0}=h_i\\ f_{i,j,[j=0]|k}=p_if_{i-1,j+1,k}+(1-p_i)f_{i-1,j-1,k} \]

\(ans_i=\sum_{j=0}^n f_{i,j,1}\)

还有一种思路是,正难则反,\(f_{i,j}\) 表示 \([i,n]\) 的后缀中 \(maxpre\)\(j\),则每次的最大前缀和必定是从原本的拓展或是置为 0。

假设序列长度为 \(l\)

\[f_{l+1,0}=1\\ f_{i,j}=p_if_{i+1,\max(j-1,0)}+(1-p_i)f_{i+1,j+1} \]

\(ans=\sum_i h_if_{1,i}\)

但这样固定长度需要 \(O(n)\),总 \(O(n^3)\)

考虑反推贡献,设 \(w_{i,j}\)\(f_{i,j}\)\(ans\) 中的系数。

\[w_{i,j}=p_iw_{i-1,\max(j-1,0)}+(1-p_i)w_{i-1,j_1} \]

则长度为 \(ans_l=w_{l+1,0}\),复杂度 \(O(n^2)\)

Takanashi Rikka
// Problem: CF1810G The Maximum Prefix
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/CF1810G
// Memory Limit: 250 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include<bits/stdc++.h>
using namespace std;
#define fin(x) freopen(#x".in","r",stdin)
#define fout(x) freopen(#x".out","w",stdout)
#define fr(x) fin(x),fout(x);
#define Fr(x,y) fin(x),fout(y)
#define INPUT(_1,_2,FILE,...) FILE
#define IO(...) INPUT(__VA_ARGS__,Fr,fr)(__VA_ARGS__)
#define pb push_back
#define ll long long
#define pii pair<int,int>
#define mp make_pair
#define intz(x,z) memset((x),(z),sizeof((x)))
#define cfast ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
inline ll lowbit(ll x){return x&-x;}
#define fi first
#define se second
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
inline void cmx(auto &x,ll y){if(y>x)x=y;}
inline void cmn(auto &x,ll y){if(y<x)x=y;}
const int N=5005,mod=1e9+7;
#define int ll
int qp(int x,int y){int res=1;for(;y;y>>=1,x=x*x%mod)if(y&1)res=res*x%mod;return res;}
int f[N][N],x[N],y[N];
void UesugiErii(){int n;cin>>n;for(int i=1,X,Y,tmp;i<=n;i++)cin>>X>>Y,tmp=qp(Y,mod-2),x[i]=X*tmp%mod,y[i]=(Y-X)*tmp%mod;for(int i=0;i<=n;i++)cin>>f[1][i];for(int i=2;i<=n+1;i++)for(int j=0;j<=n;j++)f[i][j]=(f[i-1][max(j-1,0)]*y[i-1]%mod+f[i-1][j+1]*x[i-1]%mod)%mod;for(int i=2;i<=n+1;i++)cout<<f[i][0]<<' ';cout<<'\n';
}
signed main(){//cfast;int _=1;cin>>_;for(;_;_--)UesugiErii();return 0;
}
http://www.jsqmd.com/news/118963/

相关文章:

  • Excalidraw与Keda弹性伸缩策略图解
  • 【深度拆解智能体技术底层逻辑】从架构到实现的完整解析
  • 还在手动配置Open-AutoGLM?掌握这7步自动化协作方案秒变专家
  • 高并发场景下等待时间失控?Open-AutoGLM动态调节机制来了,稳了!
  • 还在手动收集表情包?Open-AutoGLM智能采集系统让你领先同行3年
  • 从混乱到统一:Open-AutoGLM团队共享方案如何缩短80%协作成本
  • Verl 如何增加配置参数?
  • FCKEditor教学案例Word图片粘贴转存经验交流
  • 掌握这4个技巧,轻松实现Open-AutoGLM无缝版本切换
  • Excalidraw图形版本对比功能设想
  • Excalidraw与Nuxt.js服务端渲染适配
  • Excalidraw图形水印添加方法
  • Open-AutoGLM视频号推荐引擎解析(稀缺算法模型首次公开)
  • 2025年权威盘点:国内十大四通球阀制造厂家排行榜,行业内四通球阀有哪些优选实力品牌 - 品牌推荐师
  • Excalidraw支持网络拓扑自动发现
  • 2025年北京家庭搬家公司联系方式汇总: 核心城区专业服务商联系通道与高效搬迁指引 - 十大品牌推荐
  • Open-AutoGLM如何颠覆内容创作?:3步打造高转化朋友圈文案的AI秘技
  • 为什么顶级公司都在用Open-AutoGLM做智能回复?真相令人震惊
  • 2025年深圳小型搬家公司联系方式汇总: 本地资深企业官方联系方式与一站式搬迁指南 - 十大品牌推荐
  • Excalidraw支持二维码嵌入生成
  • 【Open-AutoGLM高效运维必修课】:从入门到精通的5个核心步骤
  • not every Es know geography/map
  • not every Es know geography/map
  • 2025年杭州管道疏通联系方式汇总:全市专业服务商官方联系渠道与高效合作指引 - 十大品牌推荐
  • Excalidraw与Alfred快捷启动联动
  • 2025年杭州管道疏通联系方式汇总:全市专业服务商官方联系渠道与高效合作指引 - 十大品牌推荐
  • 2025年目前头部智能货架批发厂家推荐榜单,轻型货架/可调节货架/穿梭式货架/牛脚式货架/托盘货架/货架/智能货架生产厂家怎么选择 - 品牌推荐师
  • 2025年成都管道疏通联系方式汇总:全市专业服务机构官方联系方式与高效合作指引 - 十大品牌推荐
  • 时序数据库系列(三):InfluxDB数据写入Line Protocol详解 - 实践
  • 2025年广州小型搬家公司联系方式汇总: 本地资深企业官方联系通道与一站式搬迁方案解析 - 十大品牌推荐