bzoj 1556 点这里打开题目

题目是求 a^2 求和;

原问题可以转化为:两个人在玩这个东西,问这两个人弄出来的序列相同的有多少种情况,操作方式不同即为一种不同的情况。

就这个问题,参考大佬的DP思想。

DP[t][i][j] 分别表示 两人同时第t次取小球,第一人在上面管道取了i个,第二个人在上面管道取了j个所出现相同情况的个数:

我们假设:某一个状态为  DP[t][i][j] 。当第一人取得球和第二个人取得球颜色相同时,那么下一个状态就可以从当前状态转过去;

所以很容易得到状态转移为:每个人都可以取上面和下面的;组合一样四个情况,判断球颜色是否一样:转移。

注意:自己写的时候看清下标。

This is code

#include <iostream>
#include <string.h>
#include <string>
#include <algorithm>
#include <math.h>
#include <queue>
#include <stdlib.h>
#include <stdio.h>using namespace std;
typedef long long int LL;
const int maxn=510;
char a[maxn],b[maxn];
int dp[2][maxn][maxn];
const int MOD=1024523;
int main()
{int n,m;scanf("%d%d",&n,&m);scanf("%s%s",a,b);dp[0][0][0]=1;for(int t=0;t<n+m;t++){int gd=t%2;for(int i=0;i<=n&&i<=t;i++)for(int j=0;j<=n&&j<=t;j++){if(t-i>m||t-j>m) continue;if(a[i]==a[j]) (dp[!gd][i+1][j+1]+=dp[gd][i][j])%=MOD;if(a[i]==b[t-j]) (dp[!gd][i+1][j]+=dp[gd][i][j])%=MOD;if(b[t-i]==a[j]) (dp[!gd][i][j+1]+=dp[gd][i][j])%=MOD;if(b[t-i]==b[t-j]) (dp[!gd][i][j]+=dp[gd][i][j])%=MOD;dp[gd][i][j]=0;}}printf("%d\n",dp[(m+n)%2][n][n]);return 0;
}

转载于:https://www.cnblogs.com/coded-ream/p/7207914.html

bzoj1556 (DP)相关推荐

  1. dp,sp,px相互转化

    方法一: public int sp2px(float sp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, ...

  2. [JS][dp]题解 | #打家劫舍(一)#

    题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...

  3. HDU 2084 数塔(DP)(JAVA版)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  4. dp cf 20190615

    A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...

  5. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  6. [NOI2005]聪聪与可可(期望dp)

    题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...

  7. Codeforces 903F Clear The Matrix(状态压缩DP)

    题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...

  8. 喵哈哈村的魔法考试 Round #1 (Div.2) 题解源码(A.水+暴力,B.dp+栈)

    A.喵哈哈村的魔法石 发布时间: 2017年2月21日 20:05   最后更新: 2017年2月21日 20:06   时间限制: 1000ms   内存限制: 128M 描述 传说喵哈哈村有三种神 ...

  9. 尼克的任务 dp 洛谷1280

    蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,, 首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始 ...

最新文章

  1. jupyter !wget 等系统命令使用技巧
  2. 比特币黄金(BTG)遭受51%双花攻击?——不亏
  3. 等概率随机函数的实现
  4. c语言从键盘输入千米数,第二章 C语言编程基础.ppt
  5. 几个比较实用的CSS
  6. ios 设备获取idfa_超4成用户选择升级iOS 14,35%苹果设备已无法获取IDFA
  7. SOAP消息机制简介
  8. TensorFlow:实战Google深度学习框架(五)图像识别与卷积神经网络
  9. linux ubuntu deepin apache2 rewrite
  10. 2015年总结2016展望
  11. 一天变成36小时[转]
  12. 钉钉直播html,钉钉直播功能介绍,钉钉直播步骤详情
  13. JavaScript模拟出一个input用于添加本地文件
  14. NVIDIA Jetson TX2:TX2平台介绍
  15. web.py中通过POST接收Json数据解析的bug
  16. 《西游降魔录》模块学习笔记
  17. 智能暖风机——6.利用TM1650实现显示功能
  18. 奥克兰oracle,IEM奥克兰前瞻: 顶级战队决战甲骨文中心
  19. C语言-密码2,输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)。
  20. 软件的可维护性与可复用性

热门文章

  1. python中if __name__ == ‘__main__‘:的简单理解
  2. mysql按加号没反应_请各位大哥给小老弟解疑答惑一下 为什么点击加号没有反应?感谢...
  3. setcellvalue 格式_POI对Excel单元格的格式的设置参数
  4. C语言与Java的对比,你想好选谁了吗?
  5. C语言的三种基本程序结构是什么
  6. C语言没有引用,只有指针
  7. C语言 | typedef
  8. 计算机网络技术教法改革方案,计算机网络技术专业教学模式改革探索
  9. oracle_sod,oracle geometry几何关系sdo_Geom.Relate介绍,
  10. 初学者选黑卡还是微单_明日之镜 十年索尼微单和他的镜头王国