E. Pattern Matching(题意理解+拓扑排序)

E. Pattern Matching

首先p[mtj]p[mt_j]p[mtj]必须能够匹配所给字符sjs_jsj,然后把所有能够匹配的sjs_jsj的其他模板串也找出来,这些必须放在p[mtj]p[mt_j]p[mtj]的后面,典型拓扑排序,连边然后排序即可

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<bitset>
#include<random>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<unordered_set>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,int> pli;
typedef pair<int,int> pii;
//==========================================================
const int N=200010;
int n,m,k;
map<string,int> mp;
vector<int> E[N];  // 邻接表
int d[N];
int main()
{//IO;int T=1;//cin>>T;while(T--){cin>>n>>m>>k;for(int i=1;i<=n;i++){string s;cin>>s;mp[s]=i;}bool ok=1;for(int i=1;i<=m;i++){string s;int pos;cin>>s>>pos;if(!ok) break;bool flag=0;for(int j=0;j<1<<k;j++){string t(s);for(int l=0;l<k;l++)if(j>>l&1)t[l]='_';if(mp.count(t)) {if(mp[t]!=pos)E[pos].push_back(mp[t]),d[mp[t]]++;elseflag=1;// 该位置必须能够匹配}}if(!flag) ok=0;}if(ok){queue<int> q;for(int i=1;i<=n;i++)if(!d[i]) q.push(i);vector<int> ans;while(q.size()){int t=q.front();q.pop();ans.push_back(t);for(auto v:E[t])if(--d[v]==0) q.push(v);}if(ans.size()==n){cout<<"YES\n";for(auto t:ans) cout<<t<<' ';}elsecout<<"NO\n";}elsecout<<"NO\n";}return 0;
}   

心路历程:
刚开始理解成把原匹配串重排列,然后一一对应
字符串匹配?直接暴力枚举最多24=162^4=1624=16匹配,然后二分匹配随便搞搞?写完发现题意中有一个first匹配,然后发现理解错了,然后······重看一遍又写发现又看错了,然后看了看网上题意解释真的语文水平。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sum

链接&#xff1a;https://ac.nowcoder.com/acm/problem/14269 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld 题目描述 考虑维护一个这样的问题&#xff1a…

NOI.AC#2266-Bacteria【根号分治,倍增】

正题 题目链接:http://noi.ac/problem/2266 题目大意 给出nnn个点的一棵树&#xff0c;有一些边上有中转站&#xff08;边长度为222&#xff0c;中间有一个中转站&#xff09;&#xff0c;否则就是边长为111。 mmm次询问一个东西从xxx出发走到yyy&#xff0c;每隔kkk步中转站…

服务器win2008 R2 x64 部署ASP.net core到IIS 并解决 HTTP Error 502.5 的问题

1、发布网站 &#xff1b;2、安装 vc_redist.x64 (Visual C Redistributable for Visual Studio 2015) 新装的系统没装的补丁&#xff0c;装过略过&#xff1b;3、安装WindowsHosting &#xff1a;如&#xff1a; dotnet-hosting-2.1.3-win &#xff1b;4、安装.Net Core SDK&…

codeforces1271 D. Portals(dp or 带悔贪心)

D. Portals 由于每个点可以选择前面的某些点存在重复选择的情况&#xff0c;考虑除去重复选择的可能。 贪心&#xff1a;对于每一个城堡&#xff0c;我们都尽可能在最晚的时间控制&#xff0c;也就是在最后一个能控制它的点考虑是否控制。 于是考虑设计dp 状态表示&#xf…

P3337-[ZJOI2013]防守战线【单纯形】

正题 题目链接:https://www.luogu.com.cn/problem/P3337 题目大意 nnn个地方可以建立塔也可以不建立塔&#xff0c;第iii个位置建立需要消耗CiC_iCi​元 mmm个限制要求在某个区间内的塔的数量超过DiD_iDi​ 1≤n≤1000,1≤m≤100001\leq n\leq 1000,1\leq m\leq 100001≤n≤10…

Data Structure Problem

试题链接 题目描述 题意&#xff1a; 有两个序列&#xff0c; 操作1是将a序列的第x位改成y 操作2是将b序列的第x位改成y 操作3是找到一个cx&#xff0c;满足递推式c00&#xff0c;ci max(ci-1bi&#xff0c;ai) 题解&#xff1a; 官方题解 说实话我没大看懂。。。 题是我同…

定制Ocelot来满足需求

这篇文章&#xff0c;我们将从Ocelot的中间件源码分析&#xff0c;目前Ocelot已经实现那些功能&#xff0c;还有那些功能在我们实际项目中暂时还未实现&#xff0c;如果我们要使用这些功能&#xff0c;应该如何改造等方面来说明。一、Ocelot源码解读在使用一个组件前&#xff0…

codeforces1151 E. Number of Components(计数)

E. Number of Components 方法一&#xff1a;考虑每个点的贡献&#xff0c;认为一个联通块里让编号最大的点产生贡献 那么&#xff0c;对于一个点 iii&#xff0c;如果对答案产生贡献&#xff0c;一定要点 iii 存在&#xff0c;而点 i1i 1i1 不存在。 #define IO ios::sync_…

P2490-[SDOI2011]黑白棋【博弈论,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P2490 题目大意 一个长度为nnn的棋盘上放下kkk个棋子。 第一个要是白色&#xff0c;下一个要是黑色&#xff0c;在下一个是白色以此类推。 先手操控白&#xff0c;后手操控黑。白色只能往右&#xff0c;黑色只能往左。每次…

【.NET Core项目实战-统一认证平台】第一章 功能及架构分析

从本文开始&#xff0c;我们正式进入项目研发阶段&#xff0c;首先我们分析下统一认证平台应该具备哪些功能性需求和非功能性需求&#xff0c;在梳理完这些需求后&#xff0c;设计好系统采用的架构来满足已有的需求和未来的扩展应用。1 功能性需求统一认证平台应该具备以下基本…

Shift and Reverse

题目链接 题意&#xff1a; 一个序列a1&#xff0c;a2&#xff0c;a3…an 选择一个i&#xff0c;然后将序列改成ai,ai-1,…a1,an,an-1,…ai1 可以进行无数次这样的操作 问&#xff1a;最多有多少不同的序列产生&#xff1f;&#xff08;答案mod1e97&#xff09; 题解&#xf…

UOJ#33-[UR #2]树上GCD【长链剖分,根号分治】

正题 题目链接:https://uoj.ac/problem/33 题目大意 给出nnn个点的一棵树 定义f(x,y)gcd(dis(x,lca),dis(y,lca))f(x,y)gcd(\ dis(x,lca),dis(y,lca)\ )f(x,y)gcd( dis(x,lca),dis(y,lca) )。 对于每个iii求有多少对f(x,y)i(x<y)f(x,y)i(x<y)f(x,y)i(x<y) 1≤n≤1…

codeforces1167 E. Range Deleting(双指针)

E. Range Deleting 首先不难知道如果f(l,r)f(l,r)f(l,r)满足题意&#xff0c;那么f(l,r1),f(l,r2),…,f(l,x)f(l,r1),f(l,r2),\dots,f(l,x)f(l,r1),f(l,r2),…,f(l,x)都满足题意。 因而对于每一个左端点lll&#xff0c;需要找到最小的一个右端点rrr 单调性&#xff1a;对于每…

Redis基本使用及百亿数据量中的使用技巧分享

作者&#xff1a;依乐祝原文地址&#xff1a;https://www.cnblogs.com/yilezhu/p/9941208.html作者&#xff1a;大石头时间&#xff1a;2018-11-10 晚上20&#xff1a;00地点&#xff1a;钉钉群&#xff08;组织代码BKMV7685&#xff09;QQ群&#xff1a;1600800内容&#xff1…

Subsequence Pair

题目 题目描述 题意&#xff1a; X和Y两个字符串&#xff0c;两个字符串各取子序列X1和Y1&#xff0c;问X1<Y1的情况下X1和Y1的长度和最长是多少&#xff1f; 比如例子&#xff1a; zazxwabzczazazd abcaa 第一个字符串选取子序列为azxwabzczazazd 第二个为bcaa azxwabzc…

NOI.AC#2144-子串【SAM,倍增】

正题 题目链接:http://noi.ac/problem/2144 题目大意 给出一个字符串sss和一个序列aaa。将字符串sss的所有本质不同子串降序排序后&#xff0c;求有多少个区间[l,r][l,r][l,r]使得子串sl,rs_{l,r}sl,r​排名等于al∼ra_{l\sim r}al∼r​的和。 1≤n≤21051\leq n\leq 2\times…

codeforces1481 E. Sorting Books(贪心+dp)

大佬题解1 大佬题解2 E. Sorting Books 首先每本书都移动&#xff0c;移动次数是n能够满足题意。如果某些书不用移动&#xff0c;说明把隔开他们中间的书全部抽走后自然成组。 对于每本书全部移动的情况&#xff0c;显然我们可以选择一种颜色的书全部不案&#xff0c;移动别…

【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)

本篇将介绍如何扩展Ocelot中间件实现自定义网关&#xff0c;并使用2种不同数据库来演示Ocelot配置信息存储和动态更新功能&#xff0c;内容也是从实际设计出发来编写我们自己的中间件&#xff0c;本文内容涵盖设计思想内容和代码内容&#xff0c;我希望园友们最好跟着我这个文章…

Manacher 例题讲解

文章目录HDU 4513 吉哥系列故事——完美队形II题意&#xff1a;题解&#xff1a;代码&#xff1a;HDU 3613 Best Reward题意&#xff1a;题解&#xff1a;代码&#xff1a;HDU 3068 最长回文题意&#xff1a;题解&#xff1a;代码&#xff1a;HDU 5371 Hotarus problem题意&…

NOI.AC#2139-选择【斜率优化dp,树状数组】

正题 题目链接:http://noi.ac/problem/2139 题目大意 给出nnn个数字的序列aia_iai​。然后选出一个不降子序列最大化子序列的aia_iai​和减去没有任何一个数被选中的区间数量。 1≤n≤106,1≤ai≤1081\leq n\leq 10^6,1\leq a_i\leq 10^81≤n≤106,1≤ai​≤108 解题思路 嗯…