题目传送门

 /*
贪心:按照0或1开头,若不符合,选择后面最近的进行交换。然后选取最少的交换次数
*/
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <vector>
#include <map>
#include <queue>
using namespace std; const int MAXN = + ;
const int INF = 0x3f3f3f3f;
int a[MAXN], b[MAXN], c[MAXN]; int main(void) //UVALive 6832 Bit String Reordering
{
// freopen ("A.in", "r", stdin); int n, m;
while (scanf ("%d%d", &n, &m) == )
{
for (int i=; i<=n; ++i) {scanf ("%d", &a[i]); c[i] = a[i];}
for (int i=; i<=m; ++i) scanf ("%d", &b[i]); int cnt1 = , cnt2 = ; int now = ; int p = ;
bool ok1 = true, ok2 = true;
for (int i=; i<=m && ok1; ++i)
{
for (int j=; j<=b[i]; ++j)
{
if (a[p+j] != now)
{
int k = p + j;
while (k <= n && a[k] != now) k++;
if (k == n+ || a[k] != now) {ok1 = false; break;}
cnt1 += k - (p + j);
swap (a[k], a[p+j]);
}
}
p += b[i]; now = - now;
} now = ; p = ;
for (int i=; i<=m && ok2; ++i)
{
for (int j=; j<=b[i]; ++j)
{
if (c[p+j] != now)
{
int k = p + j;
while (k <= n && c[k] != now) k++;
if (k == n+ || c[k] != now) {ok2 = false; break;}
cnt2 += k - (p + j);
swap (c[p+j], c[k]);
}
}
p += b[i]; now = - now;
} // printf ("%d %d\n", cnt1, cnt2);
if (!ok1) printf ("%d\n", cnt2);
else if (!ok2) printf ("%d\n", cnt1);
else printf ("%d\n", min (cnt1, cnt2));
} return ;
}

最新文章

  1. Set Php show errors
  2. python 类型判断-- isinstance函数
  3. 命令参数解析库JCommonder
  4. Angular系列---- AngularJS入门教程03:AngularJS 模板(转载)
  5. 实验12:Problem H: 整型数组运算符重载
  6. Going Home (hdu 1533 最小费用流)
  7. 【Spark学习】Apache Spark项目简介
  8. Jquery 学习插件第一天
  9. MySQL 1054错误 Unknown column .... in &#39;on clause&#39;
  10. python异步并发模块concurrent.futures入门详解
  11. 搭建Hadoop集群(centos6.7+hadoop-2.7.3)
  12. AWS 认证攻略(SA)
  13. PS 滤镜算法原理——高反差保留 (High Pass)
  14. Object冷知识
  15. vue---canvas实现二维码和图片合成的海报
  16. Confluence 6 其他 MBeans 和高 CPU 消耗线程
  17. python大法好——Python2.x与3​​.x版本区别
  18. 使用 ps、strace、lsof 进行 Linux 进程 trouble-shooting
  19. windows平台安装配置Gitblit
  20. framework4.0 IIS配置支持ashx

热门文章

  1. libevent编程疑难解答
  2. 纯C语言实现简单封装继承机制
  3. 到底该不该使用存储过程 MySQL查询性能优化一则
  4. Pierce振荡器设计
  5. windows内存管理的机制以及优缺点
  6. jquery源码学习笔记一:总体结构
  7. UESTC 982质因子分解
  8. 几种判断一个整数是否是2的n次方幂的方法
  9. bzoj1465 bzoj1045: [HAOI2008] 糖果传递&amp;&amp;bzoj3293: [Cqoi2011]分金币
  10. linux 下使用exp/imp 或者expdp/impdp导出导入oracle数据表数据