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

abc439_f F - Beautiful Kadomatsu dp+FIT

动态规划难题

题目链接:https://atcoder.jp/contests/abc439/tasks/abc439_f

题意:

思路:下面含义相同,ac代码用树状数组实现前缀和快速查询

通过观察得出的一个结论,由于给出的是排列(permutation 指一个长度为 n 的数组,包含 1 到 n,每个数恰好出现一次。)所以发现每个数字都不一样,每对数构成的几何关系么就是上升要么就是下降,题目中要我们找合法的子序列,也就是从原序列中随机抽出一些数字按原来的顺序排列的出的子序列满足“山谷”数量小于“山峰”数量,山谷山峰就是题目中的y和x的含义,枚举各种情况的子序列x1 x2 x3 x4 ...... xn-1 xn得出在一开始的两个数满足<和最后两个数满足>的子序列就是满足题意的,现在考虑位置 i 上的数作为子序列中的,对于我们只需要找比小的就行,所以统计L[i]表示在i之前小于P[i]的个数,由于是排列,所以R[i]=P[i]-1-L[i]表示在位置i之后小于P[i]的个数,在考虑之前的序列的结构情况,要么是一个比小的数,也就是L[i]个数都满足情况,还有就是存在两个数满足并且i < j < i,还有存在其它多位数的情况构成的序列结构满足最终的子序列是满足题意的,我们先考虑位置 i 前面仅有一个和两个元素的情况,对于三个和四个元素的情况可以由一个和两个的情况继承而来。我们可以用变量pre表示位置i 前有多少个序列(大于1个元素构成的前半部分序列)满足使得最终选出的子序列满足题意,那么对于每个位置上的能选出的合法的子序列的个数就是 ( pre+ L[i] ) * R[i],然后再更新 pre = pre*2 + L [ i ] ;

pre* 2是在做什么?

假设在处理之前,我们已经有了 3 个半成品序列:,,

现在遇到了,对于这每一个半成品,我们都有两种选择:

  • 不把放入序列,,依然是合格的半成品,数量为 pre。

  • 放入序列:由于中间部分没有大小限制,放入后,它们变成了更长的半成品*,*,*,数量也是pre。

所以,原本的pre就变成了 pre* 2。这本质上是在计算子集的数量(每个元素选或不选)。

+ L[i]是在做什么?

除了继承和扩展旧的半成品,我们还会在当前位置新产生一批半成品。

  • 代表在 i 左边有多少个比小的数。

  • 每一个比小的数,j < i , 都可以和组成一对新的“开头”:S*。

  • 由于<,这正好满足了“开头必须上升”的条件。

所以,我们要把这 L[i] 对新生产出来的“长度为 2 的半成品”加入到pre中。

AC代码:

void solve() { ll n;cin>>n; vector<ll>a(n+1),bit(n+1,0),l(n+1,0); auto up=[&](ll id) { while (id<=n)bit[id]++,id+=lowbit(id); }; auto sum=[&](ll id) { ll res=0; while (id)res+=bit[id],id-=lowbit(id); return res; }; ll pre=0,ans=0; rep(i,1,n) { cin>>a[i];l[i]=sum(a[i]);up(a[i]); ll r=a[i]-1-l[i]; ans=add(ans,mul(add(pre,l[i]),r)); pre=add(mul(pre,2),l[i]); } cout<<ans<<endl; }
http://www.jsqmd.com/news/193788/

相关文章:

  • 揭秘PHP如何驱动智能家居场景模式:从入门到精通的3个关键步骤
  • 揭秘PHP在工业控制中的应用:如何高效实现设备状态查询与响应
  • GLM-TTS能否用于核电站巡检?辐射区机器人语音反馈
  • 【RK3588开发】镜像提取备份(根文件系统)
  • E_WARNING还是E_ERROR?PHP日志级别与格式设置,你真的懂吗?
  • PHP服务性能突降?阈值设置不当是元凶(监控调优实战案例曝光)
  • 【程序员必藏】PHP实现HLS/DASH视频加密的5大核心步骤
  • 【PHP边缘计算实战指南】:掌握高效网络通信的5大核心技术
  • matlab兰伯特问题求解器
  • 使用微PE系统安装GLM-TTS运行环境可行吗?系统兼容性探讨
  • 语音合成与自动化测试结合:为GUI操作添加语音注释日志
  • 语音合成与huggingface镜像网站结合:加速大模型权重下载
  • 揭秘PHP微服务配置中心设计难点:5大核心组件全解析
  • GLM-TTS能否接入HuggingFace Spaces实现在线演示?
  • 科大迅飞语音听写(流式版)WebAPI:Web前端与H5集成全攻略
  • 高德地图几种官方样式
  • PHP服务监控阈值如何设定?10年架构师揭秘精准告警的5个关键点
  • 集装箱结构分解图,设计与功能的全方位解析,集装箱结构分解图,设计与功能的全方位解析
  • GLM-TTS是否支持粤语、四川话等方言克隆?实际测试结果公布
  • 2026年知名的全自动离心滤油机,滤油设备,离心滤油机厂家推荐及选购参考榜 - 品牌鉴赏师
  • 语音合成中的跨设备一致性:手机、音箱、耳机播放效果统一
  • PHP日志格式最佳实践(20年专家经验倾囊相授)
  • 写论文软件哪个好?宏智树AI凭这5大绝技“杀”出重围!
  • 语音合成中的数字读法控制:金额、日期、电话号码播报规范
  • 如何利用GLM-TTS和GPU算力打造个性化语音助手?
  • 语音合成项目落地难点解析:从实验室到生产的工程化挑战
  • 语音合成与安装包捆绑:发布独立运行的离线语音合成工具
  • 跨域攻击频发,PHP开发者如何守住安全底线?
  • Demo测试流程介绍
  • 语音合成文本长度限制多少?超过300字该如何分段处理?