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. 给定一个整数 n,返回 n! 结果尾数中零的数量。

    示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零. 代码部分 class Solution ...

  2. Webform 内置对象 Response对象、Request对象,QueryString

    Request对象:获取请求Request["key"]来获取传递过来的值 QueryString:地址栏数据传递 ?key=value&key=value注意事项:不需要 ...

  3. 死磕 java集合之LinkedList源码分析

    问题 (1)LinkedList只是一个List吗? (2)LinkedList还有其它什么特性吗? (3)LinkedList为啥经常拿出来跟ArrayList比较? (4)我为什么把LinkedL ...

  4. Web前端深思

    WEB视图层技术从最初刀耕火种的时代到如今技术框架丛生,其中的感受只有经历过才知道.但到目前为止前端领域还只是整个IT行业比较边缘化的分支,因为目前的前端coder大多都还停留在视图层的处理上,利用前 ...

  5. 常用linux命令大全 转载自:https://www.cnblogs.com/laov/p/3541414.html(大牛笔记)

    Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统.基于Linux有多个版本的衍生.RedHat.Ubuntu.Debian 安装VMware或VirtualBox虚拟机.具体安 ...

  6. 输入域名网站访问不了,ping与ftp都正常,这情况有可能域名被墙

    被墙的风险 1.首先域名没有备案,而且服务器是国外的服务器, 2.域名解析到国外服务器 总结:以上两点有很大几率被墙的风险 被墙的解决方案: 1.换新域名并备案(不换新域名走第二步,域名一定要备案) ...

  7. 6-Java-C(打印大X)

    题目描述: 小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度. 为了便于比对空格,所有的空白位置都以句点符来代替. 要求输入两个整数m n,表示笔的宽度,X的高度.用空格分开 ...

  8. tar (child): lbzip2: Cannot exec: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now

    tar解压bz2格式 报错 解决方法很简单,只要安装bzip2就行了,yum安装的命令如下: yum -y install bzip2 如果是无法联网,可以去官网下载安装包,进一步安装即可

  9. CAD参数绘制线型标注(网页版)

    主要用到函数说明: _DMxDrawX::DrawDimRotated 绘制一个线型标注.详细说明如下: 参数 说明 DOUBLE dExtLine1PointX 输入第一条界线的起始点X值 DOUB ...

  10. 十六进制字符串转byte (无符号字符串);

    方法一: unsigned char* hexstr_to_char(const char* hexstr) { size_t len = strlen(hexstr); IF_ASSERT(len ...