主页
最近更新
我的思路(望通过)
最后更新于 2025-05-01 22:20:06
作者
__CrossBow_EXE__
分类
题解
题解
AT_diverta2019_c
复制 Markdown
更新文章内容
[题目](https://www.luogu.com.cn/problem/AT_diverta2019_c) ~~这道题可以说是一道比较水的黄题了~~ ## 思路 首先,我们可以将题目中的字符串分为 $3$ 类: - $AB$ 在中间,这种情况最简单,直接查找并将结果增加即可 - $AB$ 被分开了,也就是 $A$ 在前一个字符串,$B$ 在下一个字符串,这种情况也比较好判断,直接计数即可。 - 字符串中根本没有 $AB$,那我们可以将这个字符串标记,在遍历所有字符串时检查标记并跳过即可。 根据以上内容,我们可以给每个字符串一个编号,创建三个数组,分别记录刚才我们区分的三种情况的字符串编号。那么,该怎么给每一个字符串一个编号呢?我们可以遍历所有字符串实现。(不过,本蒟蒻不会代码,请求大家看到此篇题解后对我私信,我会看到后更正的。) ## 代码 那么,我们来完善一下程序最主要的代码: 首先,我们假设三个字符串编号数组已创建完成,并已经创建了结果 $ans$ 变量; 再写出代码 ```cpp int a[10005]={0},b[10005]={0},c[10005]={0};//这里数组范围是文中制定的 int ans=0; for(int i=1;i<=n;i++) {//n为字符串个数 if(a[i]!=0) ans++; for(int num1=0,num2=0,i=1;b[i]==0||c[i]==0;i++){ //for循环中,num1是b数组中元素个数,num2是c数组中元素个数 if(b[i]!=0) num1++; if(c[i]!=0) num2++; } ans+=min(num1,num2);//最后取两个数组个数的较小值 } ``` 这就是我的思路,虽然不一定正确,但希望大家不喜勿喷哦!这是本蒟蒻的第一篇题解,希望审核大人通过!
Loading...
点赞
0
收藏
0