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

逆序对数列-dp前缀和优化

逆序对数列-dp前缀和优化

逆序对数列
加强版+数学

思路

如果按位置来 dp ,显然不方便转移,发现我们插入一个数之后,才会有不同的个数产生。我们考虑从 \(1\)\(n\) 不断插入,我们产生的个数就是从 \(0\)\(i\) ,设计状态 \(dp[i][j]\) 表示插入 \(i\) 之后,产生的逆序对数为 \(j\) 的个数,它的转移有 \(dp[i][j]=dp[i-1][j-k] | k \leq i\) 发现 \(j\) 可能比 \(i\) 小,这时候的转移就是 $\sum_{k \leq j} dp[i-1][k] $

此时时间复杂度为 \(O(n^3)\) 显然会 TLE,发现这个 \(\sum\) 可以前缀和优化,得到 \(O(nk)\) 。至于再优化。。之后再说吧。

#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn = 1e3+10;
constexpr int mod = 1e4;int n,k;
int dp[maxn][maxn];
int sum[maxn];// i-1 的前缀和signed main()
{#ifndef ONLINE_JUDGEfreopen("cjdl.in","r",stdin);freopen("cjdl.out","w",stdout);#endif // ONLINE_JUDGEscanf("%lld%lld",&n,&k);dp[0][0]=1;// 0 个逆序对的可能为1for(int i=0;i<=k;++i)// 0 对应的前缀和{sum[i]=1;}for(int i=1;i<=n;++i){for(int j=0;j<=k;++j){if(j>=i){dp[i][j]=(sum[j]-sum[j-i]+mod)%mod;}else{dp[i][j]=sum[j];}}sum[0]=dp[i][0];for(int j=1;j<=k;++j)// 前缀和{sum[j]=(dp[i][j]+sum[j-1])%mod;}}printf("%lld\n",dp[n][k]);return 0;
}
http://www.jsqmd.com/news/50892/

相关文章:

  • php中的phar反序列化基础
  • 干扰素:定义、类型与科研应用全解析
  • AT_arc083_d [ARC083F] Collecting Balls 笔记
  • Spring IOC 源码学习一 基本姿势
  • 可持久化01trie板子
  • 2025年11月25日
  • 2025年节油的轮胎推荐:官方TOP10低滚阻榜单揭秘
  • 基于 Vue3 及TypeScript 项目后的总结 - 详解
  • 慢就是快 用在生活中
  • 102302116_田自豪_作业3
  • 计你太美
  • 畅通工程 最小生成树
  • Oracle数据库物理备份与恢复实战指南
  • 实用指南:Kafka面试精讲 Day 30:Kafka面试真题解析与答题技巧
  • 2025年比亚迪汉更换轮胎推荐:专业TOP5排名权威发布
  • 2025年大众帕萨特更换轮胎推荐:官方权威指南深度解析
  • 2025-11-25 ZYZ28-NOIP模拟赛-Round9 hetao1733837的record
  • 学习02
  • Python稳定ABI未来发展与接口机制详解
  • 2025 人事管理工具选型:不同方案优劣势测评,中小企业闭眼抄作业
  • NOIP2025游记/OI生涯回忆
  • 2025年大众途观L更换轮胎推荐:五大专业品牌最新推荐
  • 详细介绍:Python之aedev-setup-project包语法、参数和实际应用案例
  • 树上背包优化
  • 2025年11月十大效果图公司客观评价:详实数据构建的推荐榜单
  • 2025年11月十大效果图公司推荐榜单:用户口碑评价与性能参数对比
  • Tarjan算法总结
  • 【CV】【IRSRMamba】basicSR库
  • 2025年11月十大效果图公司推荐榜单:专业分析与权威评测对比
  • 2025 年 11 月管道更換服務權威推薦榜:專業施工與高效維修,涵蓋老舊破損無縫防腐耐高溫管道更換,包括自來水消防燃氣排水污水工業通風等各類室內外場景