http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1536

不知道为何怎么写都写不对.

这题可以模拟.

虽然题目保证一定可以从原串变成目标串,但是不一定可以变成两种目标串.

所以需要判断下.统计原串中0和1的个数,然后计算目标串中0可能的个数,1可能的个数.

计算交换次数就是从后面找一个跟当前不一样的数字交换到前面来即可。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stdlib.h>
#include<algorithm>
using namespace std;
const int MAXN=;
int a[MAXN],b[MAXN],num[MAXN],temp[MAXN],ans;
int main()
{
//freopen("a.txt","r",stdin);
int n,m,num0=,num1=,res1=,res2=;
int minn=0x3f3f3f3f;
scanf("%d %d",&n,&m);
for(int i=; i<=n; i++)
{
scanf("%d",&a[i]);
if(a[i]==) num1++;
if(a[i]==) num0++;
}
// printf("%d %d\n",num1,num0);
for(int i=; i<=m; i++)
{
scanf("%d",&temp[i]);
if(i%==) res1+=temp[i];
if(i%==) res2+=temp[i];
}
//printf("%d %d\n",res1,res2);
if(res1==num1)
{
ans=;
memset(b,,sizeof(b));
int flag=,cnt=;
for(int i=; i<=m; i++)
{
for(int j=; j<=temp[i]; j++)
b[cnt++]=flag;
flag=!flag;
}
for(int i=; i<=n; i++)
{
if(a[i]==b[i]) continue;
else
{
for(int j=i+; j<=n; j++)
{
if(b[j]==!b[i])
{
swap(b[j],b[i]);
ans+=j-i;
break;
}
}
}
}
minn=min(ans,minn);
}
if(res1==num0)
{
ans=;
memset(b,,sizeof(b));
// for(int i=1;i<=n;i++) num[i]=a[i];
int flag=,cnt=;
for(int i=; i<=m; i++)
{
for(int j=; j<=temp[i]; j++)
b[cnt++]=flag;
flag=!flag;
}
for(int i=; i<=n; i++)
{
if(a[i]==b[i]) continue;
else
{
for(int j=i+; j<=n; j++)
{
if(b[j]==!b[i])
{
swap(b[j],b[i]);
ans+=j-i;
break;
}
}
}
}
minn=min(ans,minn);
}
printf("%d\n",minn);
return ;
}

csu - 1536: Bit String Reordering (模拟)的更多相关文章

  1. UVaLive 6832 Bit String Reordering (模拟)

    题意:给定一个01序列,然后让你你最少的操作数把这它变成目标. 析:由于01必须是交替出现的,那么我们就算两次,然后取最值. 代码如下: #pragma comment(linker, "/ ...

  2. 贪心 UVALive 6832 Bit String Reordering

    题目传送门 /* 贪心:按照0或1开头,若不符合,选择后面最近的进行交换.然后选取最少的交换次数 */ #include <cstdio> #include <algorithm&g ...

  3. coderforces Gym 100803A/Aizu 1345/CSU 1536/UVALive 6832 Bit String Reordering(贪心证明缺)

    Portal: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1345  http://codeforces.com/gym/100 ...

  4. 【Bit String Reordering UVALive - 6832 】【模拟】

    题意分析 题目讲的主要是给你一个01串,然后给你要变成的01串格式,问你要转换成这一格式最少需要移动的步数. 题目不难,但当时并没有AC,3个小时的个人赛1道没AC,归根到底是没有逼自己去想,又想的太 ...

  5. csu 1312 榜单(模拟题)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1312 1312: 榜单 Time Limit: 1 Sec  Memory Limit: 128 ...

  6. Water --- CSU 1550: Simple String

    Simple String Problem's Link:   http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1550 Mean: 略. analy ...

  7. CSU 1862 The Same Game(模拟)

    The Same Game [题目链接]The Same Game [题目类型]模拟 &题解: 写这种模拟题要看心态啊,还要有足够的时间,必须仔细读题,一定要写一步,就调试一步. 这题我没想到 ...

  8. csu oj 1341 string and arrays

    Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,……,第N行,从左至右依次记为第1列,第2列,……,第N列. 对于这个矩阵会进行一系列操作,但这些操作只有两类: (1) ...

  9. Codeforces Round #550 (Div. 3) E. Median String (模拟)

    Median String time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

随机推荐

  1. gulp构建工具学习汇总

    前端脚手架____gulp配置文件------- https://pan.baidu.com/s/1eSs7COy 1:有了package.json 直接 npm install自动下载相应的npm包 ...

  2. 桥接模式和php实现

    桥接模式(Bridge Pattern): 将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模 ...

  3. Linux 之 2>&1

    我们在Linux下经常会碰到nohup command>/dev/null 2>&1 &这样形式的命令.首先我们把这条命令大概分解下首先就是一个nohup表示当前用户和系统 ...

  4. STM32编程环境配置(kile5)

    2018-08-2513:53:33 折腾了很久,花了两天的空闲时间终于烧进去程序了.完成了kile5对stm32编程的环境配置. 1.下载kile5 激活破解 2.安装stm32配置环境 3.加载工 ...

  5. wordpress在撰写新文章界面的显示选项按钮点击无反应的解决办法

    原文链接:wordpress在撰写新文章界面的显示选项按钮点击无反应的解决办法 最近升级wordpress之后,发现在文章编辑界面的添加新媒体和可视化按钮点击无反应,如下:  然后就在网上找解决办法, ...

  6. linux下svn安装(ALI ECS)

    yum安装svn 搭建和使用SVN 可参考阿里云文档:https://help.aliyun.com/document_detail/52864.html?spm=5176.8208715.110.1 ...

  7. 调试SQL Server的存储过程及用户定义函数

    分类: 数据库管理 2005-06-03 13:57 9837人阅读 评论(5) 收藏 举报 sql server存储vb.net服务器sql语言 1.在查询分析器中调试 查询分析器中调试的步骤如下: ...

  8. Farseer.net轻量级开源框架 中级篇:SQL执行报告

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据库切换 下一篇:Farseer.net轻量级开源框架 中级篇: 探究ORM(M ...

  9. 梦想CAD控件,用于浏览和编辑DWG文件,在脱离AUTOCAD的情况下独立运行,相当于简易CAD

    (百度百科连接) 梦想绘图控件5.2  是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 2010开发,最早从2007年第一个版本完成,经过多年的累积已经非常 ...

  10. JavaScript中的跨域问题

    跨域问题其实很普遍的存在的,如何解决跨域问题呢,跨域问题到底是怎么产生的,解决方法的由来又是什么?我觉得看了视频讲解,值得写下来,记录下来. 一.跨域问题是怎么产生? 概念:只要协议.域名.端口有任何 ...