csu - 1536: Bit String Reordering (模拟)
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 (模拟)的更多相关文章
- UVaLive 6832 Bit String Reordering (模拟)
题意:给定一个01序列,然后让你你最少的操作数把这它变成目标. 析:由于01必须是交替出现的,那么我们就算两次,然后取最值. 代码如下: #pragma comment(linker, "/ ...
- 贪心 UVALive 6832 Bit String Reordering
题目传送门 /* 贪心:按照0或1开头,若不符合,选择后面最近的进行交换.然后选取最少的交换次数 */ #include <cstdio> #include <algorithm&g ...
- 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 ...
- 【Bit String Reordering UVALive - 6832 】【模拟】
题意分析 题目讲的主要是给你一个01串,然后给你要变成的01串格式,问你要转换成这一格式最少需要移动的步数. 题目不难,但当时并没有AC,3个小时的个人赛1道没AC,归根到底是没有逼自己去想,又想的太 ...
- csu 1312 榜单(模拟题)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1312 1312: 榜单 Time Limit: 1 Sec Memory Limit: 128 ...
- Water --- CSU 1550: Simple String
Simple String Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1550 Mean: 略. analy ...
- CSU 1862 The Same Game(模拟)
The Same Game [题目链接]The Same Game [题目类型]模拟 &题解: 写这种模拟题要看心态啊,还要有足够的时间,必须仔细读题,一定要写一步,就调试一步. 这题我没想到 ...
- csu oj 1341 string and arrays
Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,……,第N行,从左至右依次记为第1列,第2列,……,第N列. 对于这个矩阵会进行一系列操作,但这些操作只有两类: (1) ...
- 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 ...
随机推荐
- mysql自动获取时间日期
实现方式: 1.将字段类型设为 TIMESTAMP 2.将默认值设为 CURRENT_TIMESTAMP 举例应用: 1.MySQL 脚本实现用例 --添加CreateTime 设置默认时间 C ...
- java debug源码完整版
第一步:现在myeclipse或者eclipse中下载jad插件,将class文件翻译成java文件 点击下载安装 第二步:创建一个java工程,导出成jar包.jdk自带的jar包不包含debug ...
- Linux下Eclipse连接小米手机真机调试
以前用Ubuntu 12.04可以真机调试,连上手机就可以了,上次看pear os 好看于是下了个玩玩(界面风格像mac 买不起,仿得起),这次想开发安卓发现真机调试不了了...于是乎各种找资料,各种 ...
- [Android]Android Design之Navigation Drawer
概述 在以前ActionBar是Android 4.0的独有的,后来的ActionBarSherlock的独步武林,对了还有SlidingMenu,但是这个可以对4.0下的可以做很好的适配.自从Goo ...
- 2015年度精品 最新力作32位和64位xp,win7,win8,win10系统下载(电脑城专用版)
一.系统主要特点 1.安装维护方便快速 - 全自动无人值守安装,采用万能GHOST技术,安装系统过程只需3-5分钟,适 合新旧各种机型. - 集成常见硬件驱动,智能识别+预解压技术,绝大多数硬件可以快 ...
- 迅为i.MX6UL核心板ARMCortex-A7单核NXP飞思卡尔工控行业Imx6核心板
iMX6UL核心板小巧精致,尺寸仅38mm*42mm:CPU型号iMX6UL@ 528MHz ARM Cortex-A7架构 :内存:512M DDR :存储:8G EMMC,低功耗,性能强大,性价比 ...
- Java集合(二)--Iterator和Iterable
Iterable: public interface Iterable<T> { Iterator<T> iterator(); } 上面是Iterable源码,只有一个ite ...
- AngularJS小练习20170508
首先可能需要安装npm,并且配置环境. 1.打开Dos(命令提示符).按Windows徽标键+R组合键,输入cmd然后按回车键进入Dos. 2.安装Yeoman.在Dos下输入npm install ...
- Tomcat的配置方法(解压版)
Tomcat解压版虽然不用安装,但是死难配!!之前刚学的时候很是郁闷了一阵,Jsp倒还好,但是Servlet死活跑不起来.今天就把你给记下来!! 解压到C:/Tomcat 然后再配置环境变量: 添加三 ...
- js 随机生成颜色
方法一 function randomColor (){ var str='#'; for(var i=0;i<6;i++){ str+=Math.floor(Math.random()*16 ...