记忆搜索

简单题解:
刚看到这题的时候,毫无头绪。

看了NOCOW上的题解才恍然大悟。
这题卡了我4天。
蛋疼的是,第二天的时候我已经改对了,但是将输出与样例比对时坑爹了....
 
矩阵转编号:
如矩阵ACEGI......
只需求出以AB、ACD、ACEF、ACEFH......开头的矩阵的数目之和再加1即可。
编号转矩阵:
顺次枚举每一位,若当前方案开头的矩阵数目小于n则减去,否则即可确定当前位。
 
如何求以固定串开头的矩阵数目呢?
记忆化搜索!
令f[a][b][c][d][e]表示各行分别放入了a,b,c,d,e个字符的方案数。
则合法状态中,必然五参数不严格递减。
从小往大枚举每一字符,选择放到哪一行中,且必然放在该行接下来的一格中。
 

原博客地址

/*
ID: jinbo wu
LANG:C++
TASK:twofive
*/
#include<bits/stdc++.h>
using namespace std;
char  ss[33],s[33];
int n;
int f[6][6][6][6][6];
bool ok(int h,int  now)
{return (!s[h]||s[h]==now+'A');}
int dfs(int a,int b,int c,int d,int e,int now)
{if(now>=25)return 1;int res=f[a][b][c][d][e];if(res)return res;if(a<5&&ok(a,now)) res+=dfs(a+1,b,c,d,e,now+1);if(b<a&&ok(b+5,now)) res+=dfs(a,b+1,c,d,e,now+1);if(c<b&&ok(c+10,now)) res+=dfs(a,b,c+1,d,e,now+1);if(d<c&&ok(d+15,now)) res+=dfs(a,b,c,d+1,e,now+1);if(e<d&&ok(e+20,now)) res+=dfs(a,b,c,d,e+1,now+1);return f[a][b][c][d][e]=res;
}
int main()
{freopen("twofive.in","r",stdin);freopen("twofive.out","w",stdout);char c;while(cin>>c){if(c=='N'){cin>>n;for(int i=0;i<25;i++){for(s[i]='A';;s[i]++){memset(f,0,sizeof(f));int tmp=dfs(0,0,0,0,0,0);if(tmp>=n)break;n-=tmp;}}cout<<s<<endl;}else{cin>>ss;int ans=0;for(int i=0;i<25;i++){for(s[i]='A';s[i]<ss[i];s[i]++){memset(f,0,sizeof(f));ans+=dfs(0,0,0,0,0,0);}//cout<<ans<<endl;}cout<<ans+1<<endl;}}
}

twofive(记忆搜索)相关推荐

  1. [算法100天 day9]递归无尽搜和记忆搜索,动态规划Ⅲ

    补题,之前的Perfect Squre数还没AC 值得注意的是,之前的那个递推的代码是没有考虑全面的.因为没有考虑数小但是数量比贪心取得的小的情况,所以我们还是要发现用DP or 记忆搜索来找. 最优 ...

  2. 祖玛游戏(记忆搜索+A*算法)

    力扣原题,java代码 解法一:广度优先 暴力求解思想:枚举所有的情况,依次取出手中的球,将之插入到桌面不同位置.故而每次迭代中,我们只需要记录两个变量即可,即当前桌面球的信息以及手中球的信息. 初始 ...

  3. 李宏毅机器学习自己的笔记(一)----------Introduction of MachineLearning

    视频来源:李宏毅机器学习(2017)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili.com/video/av10590361/?p=2 声明:图片均来自 ...

  4. Educational Codeforces Round 93 (Rated for Div. 2) 题解

    目录 A.CF1398A Bad Triangle(模拟) B.CF1398B Substring Removal Game(贪心) C.CF1398C Good Subarrays(映射) D.CF ...

  5. Effective C++ 类与函数设计和申明

    Effective C++ 类与函数的设计和申明 在看<Effective C++>这本书的过程中,我无数次的发出感叹,这他妈写得太好了,句句一针见血,直接说到点上.所以决定把这本书的内容 ...

  6. ACL 2021 | 腾讯AI Lab、港中文杰出论文:用单语记忆实现高性能NMT

    来源:机器之心本文约3200字,建议阅读7分钟 在 ACL 2021 的一篇杰出论文中,研究者提出了一种基于单语数据的模型,性能却优于使用双语 TM 的「TM-augmented NMT」基线方法. ...

  7. uva 11468 - Substring(AC自己主动机+概率)

    题目链接:uva 11468 - Substring 题目大意:给出一些字符和各自字符相应的选择概率.随机选择L次后得到一个长度为L的字符串,要求该字符串不包括随意一个子串的概率. 解题思路:构造AC ...

  8. 【Codevs1322】单词矩阵

    Position: http://codevs.cn/problem/1322/ List Codevs1322 单词矩阵 List Description Input Output Sample I ...

  9. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

最新文章

  1. FastDFS之Linux下搭建
  2. Nginx内存池实现的了解
  3. 听说有人解决了三体问题,我去做了一点微小的调查
  4. 计算机丢失d3dcompiler,win7系统提示缺少D3DCompiler_47.dll文件怎么办
  5. 单页vue路由router
  6. (转)关于X64位系统IIS7下支持32位asp.net程序
  7. 精通Python网络爬虫:核心技术、框架与项目实战.3.2 爬行策略
  8. 有了 Service Mesh,还需要 API 网关吗?
  9. 快播资源哪里跑(逆向)
  10. 闲鱼x-sign, x-mini-wua算法签名接口调用
  11. Typecho插件之飘雪插件
  12. 计算机类毕业设计评阅书评语,本科毕业论文评阅人评语_毕业论文评阅人评语模板文库_本科毕业论文评阅老师评语大全...
  13. Objective-C学习笔记(二)——OC基本语法概述
  14. 计算机论文里的代码查重时被标红怎么办呢?
  15. 第7-5课:格式化文件读写与 PCX 图像文件
  16. 方法功能增强 - 继承、装饰者模式、动态代理
  17. sqlserver2016修改密码报错-错误: 18456
  18. PTA 6-6 使用函数计算两个复数之积
  19. 论运维职业发展中的自我修养
  20. QT in VS 多语言实现(中英文切换)

热门文章

  1. 前端Vue学习之路(四)axios请求数据
  2. 基于Android和SpringBoot的购物App
  3. Druid数据库连接池使用参考
  4. LeetCode中等题之删除链表的中间节点
  5. Apache POI:解决数据库和Excel之间相互转换的烦恼~
  6. 使用Tensor Expression张量表达式处理算子
  7. MIT Graph实践概述
  8. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理
  9. 零起点学算法104——第几天?
  10. 量子力学在计算机上的应用,量子力学在医学科学中的应用