[USACO22OPEN]

题目描述

奶牛们正在尝试一种相互交换编码信息的新方法,她们在相关的字母中混入不相关的字母,使信息难以解码。

奶牛们传输两个字符串 \(s\) 和 \(t\),每个字符串的长度不超过 \(10^5\),仅由小写字母 'a' 到 'r' 组成。为了尝试理解这条编码消息,你将被给定 \(Q\) 个询问(\(1 \leq Q \leq 10^5\))。

每个询问给定小写字母 'a' 到 'r' 的一个子集。你需要对每个询问判断 \(s\) 和 \(t\) 在仅包含询问中给定的字母时是否相等。

输入格式

输入的第一行包含 \(s\)。

第二行包含 \(t\)。

第三行包含 \(Q\)。

以下 \(Q\) 行每行包含一个询问字符串。在一个询问字符串中,所有字母均不相同。此外,所有询问字符串均已排序,且没有一个询问字符串出现超过一次。

输出格式

对每个询问,如果 \(s\) 和 \(t\) 在仅包含询问中给定的字母时相等则输出 'Y',否则输出 'N'。

样例 #1

样例输入 #1

aabcd
caabd
4
a
ac
abd
abcd

样例输出 #1

YNYN

提示

【样例解释】

对于第一个询问,当仅包含字符 'a' 时,两个字符串均变为 "aa"。

对于第二个询问,第一个字符串变为 "aac" 而第二个字符串变为 "caa"。

【测试点性质】

  • 测试点 2 满足 \(|s|,|t|,Q\le 1000\)。
  • 测试点 3-11 没有额外限制。

如果询问字符串只有一个字符,我们比较一下这种字符在两个串中的数量是否相等即可。

如果有两个字符呢这时于超时。那就暴力吧。

但是字符一多起来怎么办?发现如果s,t在仅包含有ab时相等,仅包含bc时相等,仅包含ac时相等,那么他在仅包含abc时也相等。因为两两字符的位置关系都一样,那么整个取出来也一样。这里可以感性理解一下。

字符最多26个。我们可以预处理出在每两个字符时s和t相不相等,然后对于每个询问,枚举字符串中每两个字符,按照预处理看他们相不相等。如果都相等那么整个都相等。

#include<cstdio>
#include<cstring>
const int N=1e5+5;
int n,s[20],t[20],m,q,f[20][20],k;
char a[N],b[N],x[20];
int solve(char x,char y)
{
char s[N],t[N];
int p=0,q=0;
for(int i=1;i<=n;i++)
if(a[i]==x||a[i]==y)
s[++p]=a[i];
for(int i=1;i<=m;i++)
if(b[i]==x||b[i]==y)
t[++q]=b[i];
if(p!=q)
return 0;
for(int i=1;i<=p;i++)
if(s[i]!=t[i])
return 0;
return 1;
}
int main()
{
scanf("%s%s%d",a+1,b+1,&q);
n=strlen(a+1),m=strlen(b+1);
for(int i=1;i<=n;i++)
s[a[i]-'a']++;
for(int i=1;i<=m;i++)
t[b[i]-'a']++;
for(char i='a';i<='r';i++)
for(char j='a';j<='r';j++)
f[i-'a'][j-'a']=solve(i,j);
while(q--)
{
scanf(" %s",x+1);
k=strlen(x+1);
if(k==1)
{
if(s[x[1]-'a']!=t[x[1]-'a'])
putchar('N');
else
putchar('Y');
}
else
{
for(int i=1;i<=k;i++)
{
for(int j=1;j<=k;j++)
{
if(!f[x[i]-'a'][x[j]-'a'])
putchar('N'),k=0;
}
}
if(k)
putchar('Y');
}
}
}

[USACO2022OPEN S] Subset Equality S的更多相关文章

  1. Project Euler 106:Special subset sums: meta-testing 特殊的子集和:元检验

    Special subset sums: meta-testing Let S(A) represent the sum of elements in set A of size n. We shal ...

  2. [LeetCode] Partition Equal Subset Sum 相同子集和分割

    Given a non-empty array containing only positive integers, find if the array can be partitioned into ...

  3. [LeetCode] Largest Divisible Subset 最大可整除的子集合

    Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...

  4. 洛谷 P1466 集合 Subset Sums Label:DP

    题目描述 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的.举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子 ...

  5. LeetCode "Largest Divisible Subset" !

    Very nice DP problem. The key fact of a mutual-divisible subset: if a new number n, is divisible wit ...

  6. 【USACO 2.2】Subset Sums (DP)

    N (1 <= N <= 39),问有多少种把1到N划分为两个集合的方法使得两个集合的和相等. 如果总和为奇数,那么就是0种划分方案.否则用dp做. dp[i][j]表示前 i 个数划分到 ...

  7. Leetcode 416. Partition Equal Subset Sum

    Given a non-empty array containing only positive integers, find if the array can be partitioned into ...

  8. Leetcode 368. Largest Divisible Subset

    Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...

  9. only for equality comparisons Hash Index Characteristics

    http://dev.mysql.com/doc/refman/5.7/en/index-btree-hash.html Hash Index Characteristics Hash indexes ...

  10. ArcGIS制图之Subset工具点抽稀

    制图工作中,大量密集点显示是最常遇到的问题.其特点是分布可能不均匀.数据点比较密集,容易造成空间上的重叠,影响制图美观.那么,如果美观而详细的显示制图呢? Subset Features(子集要素)工 ...

随机推荐

  1. 9、Spring之代理模式

    9.1.环境搭建 9.1.1.创建module 9.1.2.选择maven 9.1.3.设置module名称和路径 9.1.4.module初始状态 9.1.5.配置打包方式和依赖 <?xml ...

  2. SpringSecurity简明教程

    SpringSecurity主要实现UserDetailsService来验证登录的用户信息,和Security的配置类来对登录方式和资源进行限制. 案例包含利用数据库进行登录验证.URL访问限制.自 ...

  3. js获取当前月的天数

    //取得本月天数(实际代码:) var now=new Date(); var d = new Date(now.getFullYear(),now.getMonth()+1,0); var days ...

  4. Java实践项目 - 用户登录

    Smiling & Weeping ----以花祈愿,祝你平安 当用户输入用户名和密码将数据提交给数据库进行查询,如果存在对应的用户名和密码,则表示登陆成功,登录成功之后跳转到系统的主页就是i ...

  5. 你知道Golang的模板怎么用吗?带你了解动态文本的生成!

    Golang Template Go语言中的Go Template是一种用于生成文本输出的简单而强大的模板引擎.它提供了一种灵活的方式来生成各种格式的文本,例如HTML.XML.JSON等. Go T ...

  6. jenkins更换国内插件源

    sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' ...

  7. 运行在容器中Postgres数据库数据损坏后如何恢复?

    前言 在使用 K8S 部署 RSS 全套自托管解决方案- RssHub + Tiny Tiny Rss, 我介绍了将 RssHub + Tiny Tiny RSS 部署到 K8s 集群中的方案. 其中 ...

  8. 【matplotlib 实战】--柱状图

    柱状图,是一种使用矩形条,对不同类别进行数值比较的统计图表.在柱状图上,分类变量的每个实体都被表示为一个矩形(通俗讲即为"柱子"),而数值则决定了柱子的高度. 1. 主要元素 柱状 ...

  9. 记录 Ucharts 的使用

    1.开启 2d 渲染 线上运行开启 canvas2d 可以解决图表显示问题 <qiun-data-charts canvas2d .../> canvasId 可以不传,官方内置生成随机字 ...

  10. CSE 2023 混合年度回声周末

    CSE 2023 混合年度回声周末(2023 年 4 月 13 日至 15 日)25 周年银周年纪念版 近 900 名参与者参加.又是成功的伟大一年.明年 2024 年 4 月在多伦多见.敬请关注全年 ...