题意:将一个沙发放到一个分成好几个色块(一个字母代表一种颜色)的房间里,要求沙发染成跟所在色块一样的颜色,沙发分成(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. 谷歌浏览器flash被禁用解决方法

    谷歌浏览器访问设置:chrome://settings/content/flash 把要启动flash插件的网址添加进去

  2. springcloud熔断器代码简单实现

    Feign包赖熔断器相关的包,所有不用再单独引用 1.在服务消费方的基础上修改,开启熔断机制, feign.hystrix.enabled=true 2.修改消费者调用的接口 package com. ...

  3. [Array]485. Max Consecutive Ones

    Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...

  4. JavaScript创建对象的几种方式总结

    ECMA把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数. 1. 使用Object构造函数创建对象 创建自定义对象的最简单的方式就是创建一个Object的实例,然后再为它添加属性和方法 ...

  5. vue-cli+webpack搭建简单的vue项目框架

    0.先去官网下载安装nodeJS 1.在cmd中输入命令 node -version    若出现node版本号 则安装成功 2.通过命令:cd 文件夹名     进入某具体文件夹后进行如下命令操作: ...

  6. mysql 导入txt数据

    在导入数据的时候,特别是数据包含中文的时候,在导入的时候,容易出现编码规则引起的错误.例如错误提示:Invalid utf8 character string: '' 这种情况下,我们可以把需要导入的 ...

  7. Oracle树查询

    1.Oracle函数 sys_connect_by_path 语法: select sys_connect_by_path(column_name,'connect_symbo链接标志l')  fro ...

  8. day18 15.自定义连接池

    我们写的是连接池吗?Connection对象绝对不能关.现在写的玩意不是连接池.因为现在讲的是JDBC,连接池也是JDBC里面的,人家那是SUN公司定义的标准.标准,你那不是标准.既然是标准,你做连接 ...

  9. day38 02-Spring快速入门

    Spring的核心是IOC和AOP,其他的什么像SpEL都是对IOC的支持. Spring里面的web指的是它可以使用Spring MVC. 集成指的是整合其他的框架. schema是所有配置文件的约 ...

  10. Struts_登录练习(未配置拦截器)

    1.在domain中建个User.java和其配置文件 并在hibernate.cfg.xml中加入配置 2.配置struts文件 3.在jsp文件中修改action地址和name属性,并标注错误信息 ...