题意:将一个沙发放到一个分成好几个色块(一个字母代表一种颜色)的房间里,要求沙发染成跟所在色块一样的颜色,沙发分成(0,1)两种,0可以染成一种颜色,1可以染成一种颜色(换句话说,沙发最多两种颜色),放的方向无所谓(可以正放,可以倒放)。求有几个放置的位置。

题解:由于找的色块是连续区域,所提还是比较好找的,用两个字符来标记01沙发的颜色,然后逐个比较,如果后面的色块颜色跟已经染的颜色不一样则不能放下,如果放下了讲该位置标记,然后将字符串逆置再比较一次,此时已经标记过的点要跳过(防止一个点计算两次)。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <map> using namespace std; void ff(char s[])
{
int n,i;
n = strlen(s);
for(i=0;i<n/2;i++)
swap(s[i],s[n-i-1]);
} int main()
{
char s[2050],t[2050],x,y;
int m,n,i,j,num,k,f[2050];
scanf("%s%s",s,t);
memset(f,0,sizeof(f));
n = strlen(s);
m = strlen(t);
num = 0;
for(i=0;i<n;i++)
{
x = y = 0;
for(j=0,k=i;k<n&&j<m;k++,j++)
{
if(t[j]=='0')
{
if(x==0)
x = s[k];
else
{
if(x!=s[k])
break;
}
}
else if(t[j]=='1')
{
if(y==0)
y = s[k];
else
{
if(y!=s[k])
break;
}
}
}
if(j==m)
{
num++;
f[i] = 1;
}
if(k==n)
break;
}
ff(t);
for(i=0;i<n;i++)
{
if(f[i])
continue;
x = y = 0;
for(j=0,k=i;k<n&&j<m;k++,j++)
{
if(t[j]=='0')
{
if(x==0)
x = s[k];
else
{
if(x!=s[k])
break;
}
}
else if(t[j]=='1')
{
if(y==0)
y = s[k];
else
{
if(y!=s[k])
break;
}
}
}
if(j==m)
num++;
if(k==n)
break;
}
printf("%d\n",num);
return 0;
}

Gym - 101962B_Color Changing Sofa的更多相关文章

  1. Color Changing Sofa Gym - 101962B、Renan and Cirque du Soleil Gym - 101962C、Hat-Xor Gym - 101962E 、Rei do Cangaço Gym - 101962K 、Sorting Machine Gym - 101962M

    Color Changing Sofa Gym - 101962B 题意:给你一个由字母构成的字符串a,再给你一个由0.1构成的字符串b.你需要在a字符串中找到一个可以放下b的位置,要保证b字符串中0 ...

  2. Codeforces Gym 100803G Flipping Parentheses 线段树+二分

    Flipping Parentheses 题目连接: http://codeforces.com/gym/100803/attachments Description A string consist ...

  3. codeforces Gym 100187L L. Ministry of Truth 水题

    L. Ministry of Truth Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/p ...

  4. 函数的使用顺序---TABLES,USING,CHANGING

    SAP使用PERFORM的时候: ... [TABLES   itab1 itab2 ...]     [USING    a1 a2 ...]     [CHANGING a1 a2 ...]. E ...

  5. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力

     Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Fo ...

  6. ACM: Gym 101047K Training with Phuket's larvae - 思维题

     Gym 101047K Training with Phuket's larvae Time Limit:2000MS     Memory Limit:65536KB     64bit IO F ...

  7. ACM: Gym 101047E Escape from Ayutthaya - BFS

    Gym 101047E Escape from Ayutthaya Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  8. ACM: Gym 101047B Renzo and the palindromic decoration - 手速题

     Gym 101047B  Renzo and the palindromic decoration Time Limit:2000MS     Memory Limit:65536KB     64 ...

  9. Changing SID Server 2012

    Changing SID Server 2012  Windows Server > Windows Server 2012 General Question 0 Sign in to vote ...

随机推荐

  1. mybatis学习:mybatis的二级缓存

    一级缓存: 一级缓存是SqlSession级别的缓存.在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据.不同的sqlSession ...

  2. vue项目中实现扫码功能

    项目地址:https://github.com/wkl007/vue-scan-demo.git 项目主要是做的一个扫码的功能 核心代码为 <div class="scan" ...

  3. PHP--http_build_query--把数组化成&key=value方式

  4. [转]json对象详解

    json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据.2001年由Douglas C ...

  5. cmd下带参数执行python文件

    在一个文件下下创建程序代码,     sys.argv 即后续cmd中需要传入的参数列表,     sys.argv[0]即要执行的文件名     sys.argv[n]即参数的字符串 # -*- c ...

  6. macOS 中Boost的安装和使用

    1 安装Boost 1.1 使用源码安装 下载Boost源码 解压放在任意目录,例如/home/wang/ ./bootstrap.sh,默认的位置是在usr/local下面;可以通过--prefix ...

  7. python基础--计算机网络

    网络编程: 软件开发架构: c/s架构(client/server) c:客户端 s:服务端 b/s架构(browser/server) b:浏览器 s:服务端 服务端:24小时不间断提供服务 客户端 ...

  8. java-编码解码-流的操作规律

    一 编码解码 字符串:String 字节数组:byte[]字符串--编码(getBytes())-->字节数组字节数组--解码(new String(byte[]))-->字符串 publ ...

  9. JavaScript实现无缝滚动 原理详细讲解

    先了解一下对象的几个的属性: innerHTML: 设置或获取位于对象起始和结束标签内的 HTML scrollHeight: 获取对象的滚动高度. scrollLeft: 设置或获取位于对象左边界和 ...

  10. js实现自由落体

    实现自由落体运动需要理解的几个简单属性: clientHeight:浏览器客户端整体高度 offsetHeight:对象(比如div)的高度 offsetTop:对象离客户端最顶端的距离 <!d ...