题目链接

本来暴力写个TLE了,加上记忆化就A了。

 #include <cstring>
#include <cstdio>
#include <string>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int pre[][];
int flag[][];
char s1[],s2[];
int sum1[],sum2[];
int n;
int que[];
int dfs(int x,int y)
{
if(x == n&&y == n)
return ;
if(flag[x][y] == )
return ;
else if(flag[x][y] == )
return ;
if(x+ <= n)
{
if(abs(sum1[x+] + sum2[y]-(x++y-sum1[x+]-sum2[y])) <= )
{
pre[x+][y] = ;
if(dfs(x+,y))
return flag[x+][y] = ;
else
{
flag[x+][y] = ;
pre[x+][y] = ;
}
}
}
if(y+ <= n)
{
if(abs(sum1[x] + sum2[y+]-(x+y+-sum1[x]-sum2[y+])) <= )
{
pre[x][y+] = ;
if(dfs(x,y+))
return flag[x][y+] = ;
else
{
flag[x][y+] = ;
pre[x][y+] = ;
}
}
}
return ;
}
int main()
{
int i,x,y;
scanf("%d%s%s",&n,s1,s2);
if(s1[] == '')
sum1[] = ;
if(s2[] == '')
sum2[] = ;
for(i = ;i <= n;i ++)
{
if(s1[i-] == '')
sum1[i] = sum1[i-] + ;
else
sum1[i] = sum1[i-];
if(s2[i-] == '')
sum2[i] = sum2[i-] + ;
else
sum2[i] = sum2[i-];
}
if(dfs(,))
{
x = n;
y = n;
int m = ;
while(x != ||y != )
{
que[m++] = pre[x][y];
if(pre[x][y] == )
x --;
else
y --;
}
for(i = m-;i >= ;i --)
printf("%d",que[i]);
printf("\n");
}
else
printf("Impossible\n");
return ;
}

URAL 1501. Sense of Beauty(记忆化搜索)的更多相关文章

  1. URAL 1501 Sense of Beauty

    URAL 1501 思路: dp+记忆化搜索 状态:dp[i][j]表示选取第一堆前i个和第二堆前j的状态:0:0多1个              1:0和1相等                2:1 ...

  2. 记忆化搜索(DFS+DP) URAL 1501 Sense of Beauty

    题目传送门 /* 题意:给了两堆牌,每次从首部取出一张牌,按颜色分配到两个新堆,分配过程两新堆的总数差不大于1 记忆化搜索(DFS+DP):我们思考如果我们将连续的两个操作看成一个集体操作,那么这个操 ...

  3. URAL1501. Sense of Beauty(记忆化)

    链接 dfs+记忆化 对于当前状态虽然满足和差 但如果搜下去没有满足的情况也是不可以的 所以需要记忆化下 #include <iostream> #include<cstdio> ...

  4. URAL 1152. False Mirrors (记忆化搜索 状压DP)

    题目链接 题意 : 每一颗子弹破坏了三个邻近的阳台.(第N个阳台是与第1个相邻)射击后后的生存的怪物都对主角造成伤害- 如此,直到所有的怪物被消灭,求怎样射击才能受到最少伤害. 思路 : 状压,数据不 ...

  5. URAL 1698. Square Country 5(记忆化搜索)

    题目链接 题意 : 自守数的定义:如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数.例如5*5=25,则5就是自守数.让你求不超过n位的自守数有多少 思路 : 实际上,自守数还有两个性质 ...

  6. hdu1501Zipper(记忆化搜索)

    http://acm.hdu.edu.cn/showproblem.php?pid=1501 搜了下记忆化搜索是嘛 然后就看到这个题了 不过一不小心看到代码了 代码又那么短 一不小心给记住了 然后看了 ...

  7. 记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence

    题目传送门 /* 记忆化搜索(DP+DFS):dp[i][j] 表示第i到第j个字符,最少要加多少个括号 dp[x][x] = 1 一定要加一个括号:dp[x][y] = 0, x > y; 当 ...

  8. 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof

    题目传送门 /* 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 ans = min (ans, max (dp[x][y-i], dp[x-1][i-1]) + ...

  9. ural 1698. Square Country 5(记忆化搜索)

    1698. Square Country 5 Time limit: 2.0 secondMemory limit: 64 MB The first arithmetical operation ta ...

随机推荐

  1. GENERATED_UCLASS_BODY 和 GENERATED_BODY 区别

    the GENERATED_BODY() macro allows the class to build without having a constructor defined. If you ne ...

  2. Centos6.5里安装Hbase(伪分布式)

    首先我们到官方网站下载Hbase,而我使用的版本是hbase-0.94.27.tar.gz 解压下来: tar zxvf hbase-.tar.gz 寻找java安装路径 [root@localhos ...

  3. hdu 4043 2011北京赛区网络赛D 概率+大数 **

    推出公式为:P = A(2n,n)/(2^(2n)*n!) 但是不会大数,学完java再补

  4. 初探数位DP-hdu2089

    一开始刷dp就遇到了数位dp,以前程序设计艺术上看过一点,基本没懂,于是趁今天遇到题目,想把它搞会,但就目前状态来看仍然是似懂非懂啊,以后还要反复搞 统计区间[l,r]的满足题意的数的个数,可以转换成 ...

  5. Sublime Text3 配置Node.js运行命令

    ­ 在Sublime Text中可以很容易配置新的编译运行命令,下面的截图是汉化版的中文菜单,英文菜单请直接对照. 首先需要在本地安装Node,默认的Node会加入到系统的环境变量,这样执行Node命 ...

  6. 【项目总结】之——JS分割字符串

    背景: 在我们做那个招标项目的时候,由于是刚刚接触到这个BS东西,我基本上是什么也不会.可是当时组长浩哥给过我一个任务,就是叫我将数据里面以字符串形式存在的信息切割开,然后显示到前台上去.当时对于浩哥 ...

  7. 【SQL 数据库】将一张数据表信息复制到另一张数据表

    一.MySQL数据库 1.如果目标表存在 INSERT INTO 目标表  SELECT  * FROM 源表; 2.如果目标表不存在 CREATE TABLE 目标表 SELECT * FROM   ...

  8. ThinkPHP去重 distinct和group by

    转自:http://blog.csdn.net/helencoder/article/details/50328629 近期项目中,遇到数据表去重要求,对于ThinkPHP的去重有了更加准确的认识和体 ...

  9. maven会报Could not transfer artifact xxx错误

    需要在你的eclipse更新一下maven的包 如下:

  10. 数值的三种表示--C语言

    在C语言中,数值常数可以是3中形式: (1)在数值前面加0表示的是8进制数据: (2)在数字前面加0x表示的是16进制数: (3)在数值前面什么也不加,表示的是10进制数值.        目前C语言 ...