首页 > 其他分享 >ABC287 解题报告【A~F】

ABC287 解题报告【A~F】

时间:2023-02-02 11:13:29浏览次数:57  
标签:dots approx const vert 报告 int void 解题 ABC287

Atcoder Beginner Contest 287

姗姗来迟的解题报告

C 题漏了一个细节,狂 WA,心态爆炸,暴跌 58 rating

Contest link

My result

A - Majority

直接统计 For 的个数,与 \(\dfrac{n}{2}\) 比较即可。

int n,cnt;
string a;
void Solve()
{
	cin>>n;
	for(int i=1;i<=n;i++){cin>>a;cnt+=(a=="For");}
	cout<<(cnt*2>=n?"Yes":"No");
}

B - Postal Card

直接将 \(S_i\) 截取后三位然后与各个 \(T_j\) 比较即可。

const int N=1005;
int n,m,cnt;
string s[N],t[N];
void Solve()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++){cin>>s[i];s[i]=s[i].substr(3);}
	for(int i=1;i<=m;i++)cin>>t[i];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(s[i]==t[j]){cnt++;break;}
	cout<<cnt;
}

C - Path Graph?

Path graph 就是一条单链,可以直接 dfs 判。然鹅我赛时 WA 了 7 times 最后硬是没调出来

const int N=200005;
int n,m,u,v,d[N],total;
int head[N],nxt[N<<1],to[N<<1],tot;
void add(int u,int v)
{
	to[++tot]=v,nxt[tot]=head[u],head[u]=tot;
}
bool vis[N];
bool dfs(int now,int fa)
{
	vis[now]=1;total++;
	int cnt=0;
	for(int i=head[now];i;i=nxt[i])
		if(to[i]!=fa)
		{
			if(vis[to[i]]||!dfs(to[i],now))return 0;
			cnt++;
			if(cnt>1)return 0;
		}
	return 1;
}
void Solve()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v;
		add(u,v),add(v,u);
		d[u]++,d[v]++;
	}
	for(int i=1;i<=n;i++)
		if(d[i]==1)
		{
			cout<<(dfs(i,0)&&total==n?"Yes":"No");
			return;
		}
	cout<<"No";
}

D - Match or Not

一个重要结论:两个字符 \(x\) 和 \(y\) 匹配,当且仅当 \(x=\texttt{?}\) 或 \(y=\texttt{?}\) 或 \(x=y\)。

设 \(\left\vert S\right\vert=n,\left\vert T\right\vert=m\),"match"看成 \(\approx\) 符号。

于是,输出 Yes 当且仅当 \(S[1\dots i]\approx T[1\dots i]\) 且 \(S[n-m+i+1\dots n]\approx T[i+1\dots m]\)。

而 \(S[1\dots i]\approx T[1\dots i]\),当且仅当 \(S[1\dots i-1]\approx T[1\dots i-1]\) 且 \(S_i\approx T_i\)。

于是,我们可以扫一遍前缀与后缀,对于每个问题答案就是前后缀都成立。

时间复杂度 \(O(n+m)\)。

const int N=300005;
string s,t;
bool a[N],b[N],ok;
void Solve()
{
	cin>>s>>t;
	ok=1;
	for(int i=0;i<=t.size();i++)
	{
		a[i]=ok;
		if(i<t.size()&&s[i]!='?'&&t[i]!='?'&&s[i]!=t[i])ok=0;
	}
	ok=1;
	for(int i=0;i<=t.size();i++)
	{
		if(i&&s[s.size()-i]!='?'&&t[t.size()-i]!='?'&&s[s.size()-i]!=t[t.size()-i])ok=0;
		b[i]=ok;
	}
	for(int i=0;i<=t.size();i++)
		cout<<(a[i]&&b[t.size()-i]?"Yes":"No")<<endl;
}

E - Karuta

建一棵字典树,然后把所有字符串插入。对于每个字符串,结果就是最后一个遍历次数 \(\ge2\) 的节点的深度。

时间复杂度 \(O(\sum s_i)\)。

const int N=500005;
int n;
string s[N];
namespace trie
{
int tot;
struct tree
{
	int cnt,son[62];
}tr[N];
int f(char ch)
{
	if(ch>='0'&&ch<='9')return ch-'0';
	if(ch>='a'&&ch<='z')return ch-'a'+10;
	return ch-'A'+36;
}
void build()
{
	for(int i=0;i<=tot;i++)
	{
		tr[i].cnt=0;
		for(int j=0;j<62;j++)tr[i].son[j]=0;
	}
	tot=0;
}
void mdf(string s)
{
	int now=0;
	for(int i=0;i<s.size();i++)
	{
		if(!tr[now].son[f(s[i])])tr[now].son[f(s[i])]=++tot;
		now=tr[now].son[f(s[i])],tr[now].cnt++;
	}
}
int query(string s)
{
	int now=0;
	for(int i=0;i<s.size();i++)
	{
		now=tr[now].son[f(s[i])];
		if(tr[now].cnt<=1)return i;
	}
	return s.size();
}
}
void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
		trie::mdf(s[i]);
	}
	for(int i=1;i<=n;i++)cout<<trie::query(s[i])<<endl;
}

F - Components

考虑 dp,设 \(dp_{x,y,c}\) 为在以 \(x\) 为根的子树中,形成 \(y\) 个连通块,\(x\) 被选中的状态为 \(c\) 的总方案数。

标签:dots,approx,const,vert,报告,int,void,解题,ABC287
From: https://www.cnblogs.com/No-play-Yes-splay/p/solution-abc287.html

相关文章

  • R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告|附代码数据
    原文链接:http://tecdat.cn/?p=6592我们被要求在本周提供一个报告,该报告将结合pca,t-SNE算法等数值方法降低维度有两个主要用例:数据探索和机器学习。它对于数据探索很有用......
  • 第三方软件测试机构解析:加盖CMA、CNAS章的软件测试报告才有效
    一、CMA认证是什么?CMA认证是由省级以上人民政府计量行政部门对检测机构的检测能力及可靠性进行的一种全面的认证及评价,认证对象是所有对社会出具公正数据的产品质......
  • 车载吸尘器欧盟亚马逊CE认证EN50498检测报告办理
    车载吸尘器的风机叶轮在电动机高速驱动下,将叶轮中的空气高速排出风机,同时使吸尘部分内空气不断地补充进风机。这样就与外界形成较高的压差。吸嘴的尘埃、脏物随空气被吸入吸......
  • 加湿器亚马逊要求UL998测试报告
    随着经济提升,消费升级产品认证早已不是新鲜的话题,各个电商平台对带电类产品的审核更是严格,为保证消费者的安全,带电的产品都需要有相关的认证方可进行销售,小李给大家讲解加湿......
  • 单元测试|unittest生成测试报告
    unittest生成测试报告测试报告为测试结果的统计即展示,是自动化测试不可或缺的一部分,利用unittest可以生成测试报告。使用第三方HTMLTestRunner执行测试用例集,生成网页版......
  • pytest html报告
    pytest-html是pytest用于生成测试结果的html插件。可以登录github下载,可以使用pip进行安装。pip安装命令:pipinstallpytest-html以下是pytest-html通过pip安装的截图......
  • 电动自行车亚马逊UL2849测试报告
    UL2849测试报告流程1、申请人向五祥检测提出申请。2、申请人填写申请表,说明书和技术文件一并提供给五祥检测。3、五祥检测确定测试标准及测试项目并报价。4、申请人确认报价......
  • 电动自行车CE认证EN15194测试报告
    2009年欧盟推出了新的电动助力自行车标准EN15194,EN15194标准为国际第一个针对电动助力自行车的安全标准,产品通过EN15194检测可以证明产品符合国际一流水平,并且对企业开拓市......
  • Codeforces Round #846 (Div. 2) 解题报告
    前情提要:我是沙币比赛链接A.Hayatoand贪心,不大想讲代码写的很丑voidsolve(){ vector<int>a; intn,x; cin>>n; a.push_back(0); for(inti=1;i<=n;++i)......
  • 服装类目电商质检报告测试标准项目有哪些?
    服装本来就很难找到标准,最没有争议的分类就是按性别分,可以分为三类:男装,女装,童装,中性服装。在服装界,业内人士通常不这么分类,而是分为:针织与梭织。服装入驻电商销售是需要一份......