AT4519-[AGC032D]Rotation Sort【dp】
正题
题目链接: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(n2logn)O(n^2\log n)O(n2logn)
但是我们考虑到小于aja_jaj的同时也是小于aia_iai的,如果我们把所有小于aia_iai的都往左丢,这样不会出现更小的答案,所以不会被统计到里面。
这样就只和aia_iai有关了,倒序枚举jjj然后O(n2)O(n^2)O(n2)转移即可。
用线段树可以做到O(nlogn)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】相关推荐
- 【DP】【期望】$P1850$换教室
[DP][期望]\(P1850\)换教室 链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同 ...
- Bailian2760 数字三角形【DP】
2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...
- NUC1131 Triangle【DP】
Triangle 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 图1表示一个数字三角形. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ...
- LeetCode:完全平方数【279】【DP】
LeetCode:完全平方数[279][DP] 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示 ...
- 【DP】序列 题解
[DP]序列 题解 序列 题目 一个长度为kkk的整数序列bbb 1,bbb 2,-,bkbkbk(1≤bbb 1≤bbb 2≤-≤bkbkbk≤NNN)称为"好序列"当且仅当后一 ...
- 【9.22校内测试】【可持久化并查集(主席树实现)】【DP】【点双联通分量/割点】...
1 build 1.1 Description 从前有一个王国,里面有n 座城市,一开始两两不连通.现在国王将进行m 次命令,命令可 能有两种,一种是在u 和v 之间修建道路,另一种是询问在第u 次命 ...
- 【SHOI2007】【dp】书柜的尺寸
[题目描述] Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,Tom希望它的 ...
- poj 2411 Mondriaan#39;s Dream 【dp】
题目:poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案. 分析:这是一个比較经典的题目.网上各种牛B写法一大堆. ...
- BestCoder冠军赛 - 1005 Game 【DP】
[题意] 给出一个set,set中有几个数. 现在给出n个人,环成一圈搞约瑟夫... 开始时从第1号报数,每次从set中随机选出一个数s,等报数到s后,报s的人出圈,其他人继续报数. 最后只剩1人时, ...
最新文章
- php gzipstream,c# – 在WebRequest中发送gzip数据?
- android框架连接mysql_Android:ROOM数据库框架
- 中国人工智能学会2020年度优秀科技成果出炉,百度文心ERNIE入选
- pytorch Spawning 子线程
- 以后版本网卡命名规则
- jQuery 处理xml
- AI: DL方法与问题空间探索
- WinPE ISO制作
- C语言中变量在内存中是如何存放的
- java ee实验新闻_JAVAEE第四次作业-JSP显示新闻
- fiq中断的入口地址_嵌入式技巧:ARM的三种中断调试方法介绍
- 面试官问你什么是Hash表
- jdk list接口源码解析
- 移动APP测试,adb工具
- 小学计算机第一册下教案,广东省小学信息技术第一册(下)全册教案
- K8S-四层负载均衡-Service解读
- ipad上面安装view
- java 编写桌面_利用Java技术编写桌面软件基础
- 美通社日历 | 媒体关注、会展信息、企业财报发布,节假日备忘(8月3日—8月9日)...
- 最少操作次数(英雄会)
热门文章
- php判断是否是关联数组,php 关联数组判断是否为空
- python逐行读取数据时出现错误_python如何逐行读取数据
- php判断数组下标,php判断json或者数组格式与给定格式是否一致
- python 防止转义_python字符串前加r、f、u、l 的区别
- leetcode53. 最大子数组和(动态规划)
- 「软件项目管理」一文详解软件项目质量计划
- 「offer来了」浅谈前端面试中开发环境常考知识点
- javax.servlet.ServletException: 实例化Servlet类[com.wk.web.RegisterServlet]异常
- C++实现AOE网中的关键路径算法(邻接表存储)
- [Java基础]ArrayList集合常用方法