D - Armchairs(DP)
题意
给你n个椅子有小于 n 2 \frac{n}{2} 2n的椅子上坐的有人,一个人从一个椅子i到另一个椅子j的能量时abs(i-j),问用最少多少能量才能使所有的人都坐到一个从来没有被坐过的椅子上面。
思路
我们看一下这个数据范围是n<=5000就能想到肯定是一个dp,现在我们要做的就是来定义这个dp,而且求出转移方程式。
这一题的关键就是看每一个人最好坐在那一个椅子上,最终可以使需要的能量最少。
我们就相当于求每一个人坐在那个椅子上是最优的。
这种问题我们一般都定义dp[i][j]为前i个人,坐在前j个椅子上的最小能量,每次就是看多一个人以后,应该怎么来选椅子。
每次选椅子肯定是两种选择,要么就是i不选椅子j,要么就是选椅子j,不选椅子j的话就是
dp[i][j]=dp[i][j-1].
如果选椅子j的话就是.
dp[i][j]=dp[i-1][j-1]+人i和椅子j的距离(可以维护出来)。
这样就可以把题写出来了。
代码
#include<iostream>
using namespace std;
const int N=5010;
int dp[N][N];
int ps1[N],ps0[N];
int main()
{int n;cin>>n;int cnt1=0,cnt0=0;for(int i=1 ; i<=n ; i++) {int x;cin>>x;if(x==1) ps1[++cnt1]=i;else ps0[++cnt0]=i;}for(int i=1 ; i<=cnt1 ; i++){for(int j=i ; j<=cnt0 ; j++){if(i==j) dp[i][j]=dp[i-1][j-1]+abs(ps1[i]-ps0[j]);else dp[i][j]=min(dp[i-1][j-1]+abs(ps1[i]-ps0[j]),dp[i][j-1]);}}cout<<dp[cnt1][cnt0]<<endl;return 0;
}
D - Armchairs(DP)相关推荐
- D. Armchairs(dp)
题目链接 There are n armchairs, numbered from 1 to n from left to right. Some armchairs are occupied by ...
- CodeForces - 1525D Armchairs(dp)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的 010101 数列,现在可以执行的操作是:花费代价 abs(i−j)abs(i-j)abs(i−j),使得 aia_iai 和 aja_ja ...
- dp,sp,px相互转化
方法一: public int sp2px(float sp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, ...
- [JS][dp]题解 | #打家劫舍(一)#
题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...
- HDU 2084 数塔(DP)(JAVA版)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- dp cf 20190615
A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...
- BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)
Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit ...
- [NOI2005]聪聪与可可(期望dp)
题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...
- Codeforces 903F Clear The Matrix(状态压缩DP)
题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...
最新文章
- php 几十万数据导出到csv
- 学vc,加油站(一)区域渐变
- 《javascript设计模式》笔记之第七章:工厂模式
- MySQL使用sql备份文件恢复数据库
- 为最快动脉线诊断 铁科院联合第四范式完成高铁智能化巡检应用
- Spark 1.3 新特性 :176个贡献者,1000+ patches
- ubutnu16.04安装ros2
- 工作405-关于vue组件开发过程中一直报错:This relative module was not found:
- base64转图片_从一道面试题说起:GET 请求能传图片吗?
- matlab中fitrsvm函数,训练用于一类和二类分类的支持向量机 (SVM) 分类器
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...
- VC++中实现报警声音
- 硬盘格式化工具 标记坏扇区_硬盘格式化后是否还记得坏扇区?
- 人民币对美元汇率中间价报6.7343元 上调13个基点
- TRIZ系列-创新原理-14~15-曲面化原理和动态性原理
- Java根据当前日期获取年初,年末,季初,季末,月初,月末日期的方法
- centos7挖矿病毒(xmrig,javs)清理
- docker 启动 端口 无效, 绑定不上 端口
- springsecurity记住我
- 每天坚持英语学习为什么还是学不好?