题意:将一个沙发放到一个分成好几个色块(一个字母代表一种颜色)的房间里,要求沙发染成跟所在色块一样的颜色,沙发分成(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. 2018-10-20-C#-从零开始写-SharpDx-应用-初始化dx修改颜色

    title author date CreateTime categories C# 从零开始写 SharpDx 应用 初始化dx修改颜色 lindexi 2018-10-20 17:34:37 +0 ...

  2. PhpExcel参考网址

    参考网址: http://www.cnblogs.com/yuwensong/p/3771787.html

  3. ubuntu查看并杀死进程

    Ubuntu 查看和杀死进程 今天在netbeans中关闭webrick时,发现没有关闭掉,打入localhost:3000 依然显示页面,发现无法从nb中再次关闭 只有进入ubuntu的进程下关闭 ...

  4. case expressions must be constant expressions

    As the error message states, the case expressions must be constant. The compiler builds this as a ve ...

  5. Linux 文本处理三剑客之grep

    文本处理都要使用正则表达式,正则表达式有: 基本正则表达式:grep或者egrep -G 扩展正则表达式:egreo或者grep -E Linux 文本处理三剑客: sed:stream editor ...

  6. Leetcode74. Search a 2D Matrix搜索二维矩阵

    编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入: matrix ...

  7. Apache配置虚拟主机,全部指向一个目录

    配置虚拟主机的时候,全部指向了一个目录,解决方法是在httpd.conf中添加: NameVirtualHost *:80

  8. Win7系统中wmiprvse.exe占用CPU高如何解决

    该进程的详细路径是在:C:\WINDOWS\System32\Wbem  我们可以在任务管理器中“wmiprvse.exe”进程上单击右键,选择“打开文件位置”即可看到,如果该文件不在该文件夹中,那么 ...

  9. Linux iptables开放特定端口

    如果系统已安装则调过安装步骤 查找安装包 yum list | grep iptables 安装iptables yum install iptables-services 重启防火墙使配置文件生效 ...

  10. 官网svn提交到代码库,但是不能同步到web目录

    现象:数据库名字存在,但是数据库中表为空:svn提交代码能到svn库中,但不能同步到web目录. 原因:磁盘分区满了,导致内测服务器中数据库先删掉但没能从线上拉取回来,显示数据库中表为空: 磁盘满,导 ...