当前位置: 首页 > news >正文

pyyzDay11

落课了

模拟赛

T1

大炮

dp[i][j]表示第一个串1i和第二个串1j的位置能否匹配

扫一遍判断即可

注意前缀*的情况特判,以及初始化

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iomanip>
#include<bits/stdc++.h>
#define int long long
#define jiaa(a,b) {a+=b;if(a>=MOD) a-=MOD;}
#define jian(a,b) {a-=b;if(a<0) a+=MOD;}
using namespace std;
int ksm(int a,int b,int p){if(b==0) return 1;if(b==1) return a%p;int c=ksm(a,b/2,p);c=c*c%p;if(b%2==1) c=c*a%p;return c%p;	
}
inline int read()
{int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}return x*f;
}
map<char,bool> mm;
int dp[5005][5005],maxx[5005];
signed main()
{//freopen("filename.in", "r", stdin);//freopen("filename.out", "w", stdout);string S,t;cin>>S>>t;string s="";int N=S.size();int m=t.size();for(int i=0;i<m;i++){mm[t[i]]=1;}for(int j=0;j<N;j++){if(S[j]=='*'||S[j]=='?') continue;if(!mm[S[j]]){cout<<"NO"<<'\n';return 0;}}int fl=0;for(int i=0;i<N;i++){if(!fl&&S[i]!='*'){fl=1;s+=S[i];}else if(fl){s+=S[i];}}int n=s.size();if(fl){for(int j=0;j<m;j++){if(s[0]==t[j]||s[0]=='?') dp[0][j]++;} }else{if(s[0]==t[0]||s[0]=='?') dp[0][0]++;else{cout<<"NO"<<'\n';return 0;}}for(int i=1;i<n;i++){for(int j=0;j<m;j++){if(s[i]>='a'&&s[i]<='z'){if(s[i]==t[j]&&dp[i-1][j-1]>0) dp[i][j]++;}else if(s[i]=='?'){if(dp[i-1][j-1]>0) dp[i][j]++;}else{if(dp[i-1][j-1]){dp[i][j]++;dp[i+1][j]++;}if(maxx[i-1]) dp[i][j]++;}maxx[i]=max(maxx[i],dp[i][j]);}}if(dp[n-1][m-1]>0) cout<<"YES"<<'\n';else cout<<"NO"<<'\n';return 0;
}

T2

考虑n^2暴力

枚举A|At|A两个断点

hash判断是否相等即可

考虑优化掉枚举断点

对整个字符串进行manacher预处理每个点回文最大长度

现在枚举断点i

发现A At和At A都是回文

即需要找到满足 j<=di+i且 i>=j-dj的所有j点

显然树状数组做即可

http://www.sczhlp.com/news/12685/

相关文章:

  • 20250815
  • STM32F103C8T6 与 STM32F103C6T6 资源对比
  • 8月15日
  • 软件开发 - 避免过多的 if-else 语句(利用策略模式、使用映射表、运用枚举、利用函数式编程)
  • ts基础入门d2 pixpin截图
  • 打印沙漏
  • 树上 DP(树形 DP 换根 DP)
  • 读书笔记:数据库的保存与撤销:程序员必须懂的提交与回滚原理
  • 忽有故人心上过,回首山河已是秋
  • 排卡
  • windows安装ubuntu 22
  • RPC框架的优化
  • 面向对象(三大特点→内部类)+异常
  • 若干背包模型 powered by ddxrS
  • Makefile变量赋值操作符详解:`:=`与`+=`的区别与使用
  • UAC
  • 鸽巢
  • yny组合计数
  • unixODBC编程(八)使用滚动游标
  • unixODBC编程(九)分片查询长数据
  • 题解 P3380【模板】树套树(莫队套分块)
  • unixODBC编程(四)插入数据
  • 考研题:假设二叉树采用二叉链存储结构,设计一个算法,计算该二叉树中结点的总数。
  • 2.11 rt-thread实操 esp8266 +webserver
  • unxiODBC编程(五)错误处理
  • Kotlin基础
  • JAVA学习(8月15号)
  • 硬币购物
  • Docker知识点2 - Charon
  • unixODBC编程(二)连接数据库