正题

题目链接:https://www.luogu.com.cn/problem/AT4519


题目大意

给出一个长度为nnn的排列,每次可以选择一个区间,然后花费AAA的代价向左旋转(最左边的丢到最右边)或者花费BBB的代价向右旋转。
排升序序的最小花费。

1≤n≤50001\leq n\leq 50001≤n≤5000


解题思路

相当于向右丢和向左丢。因为位置不固定非常麻烦,我们可以考虑统计那些顺序固定的。

设fif_ifi​表示做到第iii个且第iii个不动的最小花费,然后考虑fjf_jfj​转移到fif_ifi​时的代价,那么显然我们要把中间数都变成在aja_jaj​到aia_iai​之间,所以把其中所有大于aia_iai​的往右丢,小于aja_jaj​的往左丢。
这样可以做到O(n3)O(n^3)O(n3)或者用数据结构做到O(n2log⁡n)O(n^2\log n)O(n2logn)

但是我们考虑到小于aja_jaj​的同时也是小于aia_iai​的,如果我们把所有小于aia_iai​的都往左丢,这样不会出现更小的答案,所以不会被统计到里面。

这样就只和aia_iai​有关了,倒序枚举jjj然后O(n2)O(n^2)O(n2)转移即可。

用线段树可以做到O(nlog⁡n)O(n\log n)O(nlogn)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=5100;
ll n,A,B,a[N],f[N];
signed main()
{scanf("%lld%lld%lld",&n,&A,&B);for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);memset(f,0x3f,sizeof(f));a[0]=-1;++n;a[n]=n;f[0]=0;for(ll i=1;i<=n;i++){ll up=0,dn=0;for(ll j=i-1;j>=0;j--){if(a[j]<a[i])f[i]=min(f[i],f[j]+up*A+dn*B);if(a[j]>a[i])up++;else dn++;}}printf("%lld\n",f[n]);
}

AT4519-[AGC032D]Rotation Sort【dp】相关推荐

  1. 【DP】【期望】$P1850$换教室

    [DP][期望]\(P1850\)换教室 链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同 ...

  2. Bailian2760 数字三角形【DP】

    2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...

  3. NUC1131 Triangle【DP】

    Triangle 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 图1表示一个数字三角形. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ...

  4. LeetCode:完全平方数【279】【DP】

    LeetCode:完全平方数[279][DP] 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示 ...

  5. 【DP】序列 题解

    [DP]序列 题解 序列 题目 一个长度为kkk的整数序列bbb 1,bbb 2,-,bkbkbk(1≤bbb 1≤bbb 2≤-≤bkbkbk≤NNN)称为"好序列"当且仅当后一 ...

  6. 【9.22校内测试】【可持久化并查集(主席树实现)】【DP】【点双联通分量/割点】...

    1 build 1.1 Description 从前有一个王国,里面有n 座城市,一开始两两不连通.现在国王将进行m 次命令,命令可 能有两种,一种是在u 和v 之间修建道路,另一种是询问在第u 次命 ...

  7. 【SHOI2007】【dp】书柜的尺寸

    [题目描述] Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,Tom希望它的 ...

  8. poj 2411 Mondriaan#39;s Dream 【dp】

    题目:poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案. 分析:这是一个比較经典的题目.网上各种牛B写法一大堆. ...

  9. BestCoder冠军赛 - 1005 Game 【DP】

    [题意] 给出一个set,set中有几个数. 现在给出n个人,环成一圈搞约瑟夫... 开始时从第1号报数,每次从set中随机选出一个数s,等报数到s后,报s的人出圈,其他人继续报数. 最后只剩1人时, ...

最新文章

  1. php gzipstream,c# – 在WebRequest中发送gzip数据?
  2. android框架连接mysql_Android:ROOM数据库框架
  3. 中国人工智能学会2020年度优秀科技成果出炉,百度文心ERNIE入选
  4. pytorch Spawning 子线程
  5. 以后版本网卡命名规则
  6. jQuery 处理xml
  7. AI: DL方法与问题空间探索
  8. WinPE ISO制作
  9. C语言中变量在内存中是如何存放的
  10. java ee实验新闻_JAVAEE第四次作业-JSP显示新闻
  11. fiq中断的入口地址_嵌入式技巧:ARM的三种中断调试方法介绍
  12. 面试官问你什么是Hash表
  13. jdk list接口源码解析
  14. 移动APP测试,adb工具
  15. 小学计算机第一册下教案,广东省小学信息技术第一册(下)全册教案
  16. K8S-四层负载均衡-Service解读
  17. ipad上面安装view
  18. java 编写桌面_利用Java技术编写桌面软件基础
  19. 美通社日历 | 媒体关注、会展信息、企业财报发布,节假日备忘(8月3日—8月9日)...
  20. 最少操作次数(英雄会)

热门文章

  1. php判断是否是关联数组,php 关联数组判断是否为空
  2. python逐行读取数据时出现错误_python如何逐行读取数据
  3. php判断数组下标,php判断json或者数组格式与给定格式是否一致
  4. python 防止转义_python字符串前加r、f、u、l 的区别
  5. leetcode53. 最大子数组和(动态规划)
  6. 「软件项目管理」一文详解软件项目质量计划
  7. 「offer来了」浅谈前端面试中开发环境常考知识点
  8. javax.servlet.ServletException: 实例化Servlet类[com.wk.web.RegisterServlet]异常
  9. C++实现AOE网中的关键路径算法(邻接表存储)
  10. [Java基础]ArrayList集合常用方法