题解

一道很不错的动态规划问题,首先这些印章一定是s的子串。
我们可以枚举s的子串然后进行check。
如何check,成了这道题的关键。

由于盖章的顺序不知道,所以我们可以使用动态规划的方法。
我们定义状态:
dp[i][j]dp[i][j]dp[i][j]表示的是sss串的前i" role="presentation" style="position: relative;">iii个被完美盖上,并且Stamp刚好盖到第jjj个,的bool值。

这样最终的答案就是dp[len(s)−1][len(stamp)−1]" role="presentation" style="position: relative;">dp[len(s)−1][len(stamp)−1]dp[len(s)−1][len(stamp)−1]dp[len(s)-1][len(stamp)-1]。

转移方程:
我们枚举i、ji、ji、j,选择一个dp[i][j]=1dp[i][j]=1dp[i][j] = 1的i,ji,ji,j出发,
当我们考虑它能转移到的状态:
当s[i+1]==stamp[j+1]s[i+1]==stamp[j+1]s[i+1] == stamp[j+1]说明 dp[i+1][j+1]=1dp[i+1][j+1]=1dp[i+1][j+1] = 1
当s[i+1]==stamp[0]s[i+1]==stamp[0]s[i+1] == stamp[0],说明dp[i+1][0]=1dp[i+1][0]=1dp[i+1][0] = 1,因为新盖的章可以把当前这个章给盖住。
当j==len(stamp)−1j==len(stamp)−1j == len(stamp)-1的时候,说明当前的章已经完全盖住了s[0-i]的后缀串。
因此我们考虑所有的s[i+1]==stamp[jj]s[i+1]==stamp[jj]s[i+1] == stamp[jj],现在可以随便盖,因为前面的部分都会被刚才那个章子覆盖掉。
也就有dp[i+1][jj]=1dp[i+1][jj]=1dp[i+1][jj] = 1

代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <set>
using namespace std;
const int maxn = 155;
string os;
int n;
int dp[maxn][maxn];
bool check(string ps){if(ps[0] != os[0]) return 0;memset(dp,0,sizeof(dp));dp[0][0] = 1;for(int i = 0;i < os.size()-1;++i){for(int j = 0;j < ps.size();++j){if(!dp[i][j]) continue;if(os[i+1] == ps[(j+1)%ps.size()]) dp[i+1][(j+1)%ps.size()] = 1;if(os[i+1] == ps[0])dp[i+1][0] = 1;}if(dp[i][ps.size()-1]){for(int j = 0;j < ps.size();++j){if(os[i+1] == ps[j])dp[i+1][j] = 1;}}}return dp[os.size()-1][ps.size()-1];}
int main(){cin>>os;n = os.length();set<string>st;for(int i = 0;i < n;++i){for(int j = i;j < n;++j){string ps = os.substr(i,j-i+1);if(check(ps)) st.insert(ps);}}for(auto as : st){cout<<as<<endl;}return 0;
}

codeforces gym-101745 D-Stamp Stamp Stamp动态规划相关推荐

  1. Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks

    Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目,非常有意思. 这里用到的思想是归并排序! 多路归并排序 ...

  2. Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)

    Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven) 题目来源: Codeforces 题意: 给出一些比赛, ...

  3. [Codeforces Gym 101651/100725B] Banal Tickets

    Codeforces Gym 100725 题解: 先分两种情况, 积为000与积非0" role="presentation" style="position ...

  4. Codeforces Gym 100513G G. FacePalm Accounting 暴力

    G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...

  5. Codeforces Gym 100269 Dwarf Tower (最短路)

    题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game na ...

  6. Codeforces Gym 100676G Training Camp 状压dp

    http://codeforces.com/gym/100676 题目大意是告诉你要修n门课,每门课有一个权值w[i], 在第k天修该课程讲获得k*w[i]的学习点数,给出了课程与先修课程的关系,要修 ...

  7. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  8. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset

    Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...

  9. Codeforces Gym 100650B Countdown (离线)

    题目链接:http://codeforces.com/gym/100650 根据给出的树和d,求出一些结点,这些结点形成子树的第d层结点数应该尽量多,具体要求可以参考题目. dfs一个结点前保存询问深 ...

  10. Codeforces Gym 101630J Travelling from Petersburg to Moscow (最短路)

    题目链接 http://codeforces.com/gym/101630/attachments 题解 zyb学长的题. 先枚举第\(k\)大的边权,设其边权为\(x\),然后把每条边边权减掉\(x ...

最新文章

  1. mysql 聚簇索引和非聚簇索引_聚簇索引和非聚簇索引
  2. 全球及中国牵引螺丝行业规模现状与“十四五”发展前景预测报告2021-2027年版
  3. 8.3 直接插入排序
  4. 人月神话阅读笔记 03
  5. 神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(NumPy科学计算库<2>python)
  6. Delphi常用系统函数总结
  7. YOLOV5+Deepsort行人跟踪初探
  8. 【18】Python半成品购物车
  9. Eclipse用法和技巧十九:eclipse修改workspace
  10. SQL Sever — 设置外键+组合键(唯一性约束)、修改取值范围、设置某列的默认值
  11. C++/CLR 使用(VS2012,VS2013,VS2015)编写
  12. 数学建模论文分析--2015A高教社杯--太阳影子定位的多目标优化模型
  13. vue+html5实现分类、商品分类、类别、菜单的左右层级布局两种不同精美样式
  14. Udesk全场景客服系统FAQ分享(202010期)
  15. pdf文件过大如何缩小上传
  16. BSP-充电名词解释
  17. 关于阻止PROE联网的一些想法!
  18. 华为ensp NAT技术地址转换
  19. 《python编程从入门到实践》读书笔记1
  20. mql语句中的增删改查

热门文章

  1. tutte定理证明hall定理_人教社课本现低级错误?“爱因斯坦用相对论证明勾股定理”...
  2. linux中wine yum安装,分享|在基于RedHat或Debian的系统上安装 Wine 1.7
  3. 沙洋有几个微服务群_集群 分布式 微服务
  4. 7-8 数字三角形 (31 分)(思路+详解+动态规划)Come Baby!!!!!!!!!!!
  5. 『软件工程1』详解软件是什么
  6. [Qt入门] QPushButton创建
  7. C++实现具有[数组]相似特征的类DoubleSubscriptArray
  8. Deltix Round, Spring 2021 D. Love-Hate 随机化 + sos dp(高维前缀和)
  9. Codeforces Round #723 (Div. 2) D. Kill Anton 线段树 + 暴力
  10. 数论五之容斥——硬币购物,Gerald and Giant Chess,幸运数字,Sky Full of Stars,已经没有什么好害怕的了