题目链接:点击查看

题目大意:给出一个长度为 nnn 的 010101 数列,现在可以执行的操作是:花费代价 abs(i−j)abs(i-j)abs(i−j),使得 aia_iai​ 和 aja_jaj​ 交换,问最少需要花费多少代价,可以使得原本为 111 的位置全部变为 000,题目保证一定有解

题目分析:因为保证了一定有解,一开始以为就是个裸的费用流,交了一发果不其然 T 掉了,所以考虑 dp

考虑一个贪心的性质,假设初始时 111 所在的位置排序后分别为 x1,x2,...,xkx_1,x_2,...,x_kx1​,x2​,...,xk​,同时操作后为 111 的位置分别为 y1,y2,...,yky_1,y_2,...,y_ky1​,y2​,...,yk​,显然让 xix_ixi​ 移动到 yiy_iyi​ 的位置一定是一种最优的方案

所以可以去进行 dp,即 dpi,jdp_{i,j}dpi,j​ 代表到了第 iii 个位置,已经安排了前 jjj 个 111 到相应位置的最小代价,对于每个 000 所在的位置,我们可以考虑将第 jjj 个 111 放在这里,也可以什么都不操作,于是就转变为了一个比较简单的 dp 了

代码:

// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<list>
#include<unordered_map>
#define lowbit(x) x&-x
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
template<typename T>
inline void read(T &x)
{T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f;
}
template<typename T>
inline void write(T x)
{if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');
}
const int inf=0x3f3f3f3f;
const int N=5e3+100;
int a[N],dp[N][N];
vector<int>pos;
int main()
{#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int n;read(n);for(int i=1;i<=n;i++) {read(a[i]);if(a[i]) {pos.push_back(i);}}memset(dp,inf,sizeof(dp));int k=pos.size();dp[0][0]=0;for(int i=1;i<=n;i++) {for(int j=0;j<=k;j++) {dp[i][j]=min(dp[i][j],dp[i-1][j]);}if(a[i]==0) {for(int j=1;j<=k;j++) {dp[i][j]=min(dp[i][j],dp[i-1][j-1]+abs(pos[j-1]-i));}}}printf("%d\n",dp[n][k]);return 0;
}

CodeForces - 1525D Armchairs(dp)相关推荐

  1. Codeforces 833B 题解(DP+线段树)

    题面 传送门:http://codeforces.com/problemset/problem/833/B B. The Bakery time limit per test2.5 seconds m ...

  2. CodeForces 864E Fire dp递推

    CodeForces 864E 题意:有 n 个物品着火,每个物品要花 ti 时间扑灭,且在 >= di 时间后就会坏掉,物品价值为 pi . 问最多可以救回多少价值,物品个数,及救哪些物品(要 ...

  3. Codeforces 864E - Fire(dp)

    原题连接:http://codeforces.com/problemset/problem/864/E 题意:一个人想从大火中带走一些东西.每次他只能带一个,耗时ti ,价值为pi, 当总时间超过di ...

  4. CodeForces - 1497D Genius(dp)

    题目链接:点击查看 题目大意:给出 nnn 个问题,每个问题有如下属性: tagtagtag:标签 ccc:困难度 sss:奖励值 初始时 ci=2ic_i=2^ici​=2i,初始时 IQ=0IQ= ...

  5. D - Yet Another Problem On a Subsequence CodeForces - 1000D (DP,组合数学)

    D - Yet Another Problem On a Subsequence CodeForces - 1000D The sequence of integers a1,a2,-,aka1,a2 ...

  6. Codeforces 480D Parcels(dp)

    题目链接:Codeforces 480D Parcels 题目大意:就是有一个用来堆放货物的板,承重力为S.现在有N件货物,每件货物有到达的时间,运走的时间,以及 重量,承重,存放盈利.如果这件货物能 ...

  7. Codeforces 711c 简单dp

    题目:http://codeforces.com/problemset/problem/711/C 题意: 有n棵树,m(1-m)种颜色,要求划分成k组,每组是连续的同一种颜色的树. 刚开始树有的已经 ...

  8. 【CodeForces】【DP】14E Camels

    CodeForces 14E Camels 题目 ◇题目传送门◆ 题目大意 给定N,TN,TN,T要求求出满足下列条件的填数方案数. 1. 对于第j(2≤j≤N−1)j(2≤j≤N−1)j(2\le ...

  9. D. Armchairs(dp)

    题目链接 There are n armchairs, numbered from 1 to n from left to right. Some armchairs are occupied by ...

最新文章

  1. Nature子刊:涵盖20多万个基因组的人体肠道微生物参考基因组集
  2. 量化人类社会交互行为
  3. 2.2.2 定点数的运算(移位、原码和补码的加减乘除、溢出概念和判别方法)
  4. Socket阻塞与非阻塞,同步与异步、I/O模型
  5. python绘制四边螺旋线代_解决python彩色螺旋线绘制引发的问题
  6. 卷积法求解系统的零状态响应_信号与系统复习(2013.6)
  7. 10_隐马尔科夫模型HMM1_统计学习方法
  8. codeforce Gym 101102A Coins (01背包变形)
  9. 【渝粤教育】广东开放大学 个人与团队管理 形成性考核 (47)
  10. rails--bcrypt对密码加密
  11. 14.mac apche
  12. excel mysql乱码_excel打开是乱码的解法方法
  13. linux 锐捷客户端登录密码,Linux使用经验_使用锐捷客户端登录校园网
  14. 宽带密码忘了怎么办?ADSL宽带账号密码找回教学
  15. “荣光医院”急救中心 73 问答
  16. conver(array)
  17. Android:圆形头像
  18. The request client is not a secure context and the resource is in more-private address ...
  19. Redis集群的设计与使用
  20. [BZOJ 1778][Usaco2010 Hol]Dotp 驱逐猪猡

热门文章

  1. odoo xml样式_自定义Odoo的界面样式
  2. Docker日志大小限制
  3. MySQL模糊查询—between and关键字
  4. SpringSecurity用数据库信息做认证
  5. 分布式架构的分布式文件系统
  6. 获取class文件对象三种方式
  7. Session的底层实现原理
  8. webservice的css哪里添加,jQuery_XML+XSLT+CSS+JQuery+WebService组建Asp.Net网(2), 3.       更 - phpStudy...
  9. Spring Security源码解析(三)—— HttpSecurity
  10. c#启动mysql数据库服务器_c#判断数据库服务器是否已经启动的方法