[atARC094F]Normalization
考虑$s$能变成$t$的必要条件(假设$s\ne t$):
1.$s$中存在一对相邻字符不同
2.$|s|=|t|$且若将a-c对应为0-2,则字符模3同余;
3.$t$中存在一对相邻两个字符相同
同时,对于$|s|\ge 4$,这个充分条件也是必要条件,证明如下:
归纳,对于$|s|=4$暴力验证,否则考虑通过若干次操作将$s$首或尾的字符与$t$相同,然后删去这个字符
具体的构造:若初始相同,直接删去即可,否则强制$s_{2}=s_{3}=除去s_{1}和t_{1}的另一种字符$,然后通过$s_{4}$调整模数相等,再令$s_{5}=...=s_{|s|}=a$即可,先将$s[2,|s|]$变为该字符串,然后再操作一次即相同
同时为了保证第2个性质,若仅在首部出现相邻的相同字符,选择删去尾部,且由于$|s|\ge 4$,首尾相同的部分必然不会重复,因此合法
对于第一个条件直接判定(注意还有$s=t$的1种)即可,否则令$f[i][j][k][p]$表示$t$中前$i$个字符和模3为$j$,最后一个字符为$k$,是否出现过相邻字符相同的方案数,转移分类讨论即可
特别的,如果$s$中没有相邻两个字符,但$t=s$仍然是合法解,答案要加1

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 #define mod 998244353
5 int n,sum,ans,vis[3][3][3],f[N][3][3][2];
6 char s[N];
7 void dfs(int a,int b,int c){
8 if (vis[a][b][c])return;
9 vis[a][b][c]=1;
10 ans++;
11 if (a!=b)dfs(3-a-b,3-a-b,c);
12 if (b!=c)dfs(a,3-b-c,3-b-c);
13 }
14 int main(){
15 scanf("%s",s);
16 n=strlen(s);
17 if (n==2){
18 printf("%d",1+(s[0]!=s[1]));
19 return 0;
20 }
21 if (n==3){
22 dfs(s[0]-'a',s[1]-'a',s[2]-'a');
23 printf("%d",ans);
24 return 0;
25 }
26 bool flag=0;
27 for(int i=1;i<n;i++)
28 if (s[i]!=s[0]){
29 flag=1;
30 break;
31 }
32 if (!flag){
33 printf("1");
34 return 0;
35 }
36 for(int i=0;i<3;i++)f[0][i][i][0]=1;
37 for(int i=1;i<n;i++)
38 for(int j=0;j<3;j++)
39 for(int k=0;k<3;k++)
40 for(int l=0;l<3;l++)
41 for(int p=0;p<2;p++)
42 f[i][j][k][(p|(l==k))]=(f[i][j][k][(p|(l==k))]+f[i-1][(j+3-k)%3][l][p])%mod;
43 sum=0,ans=1;
44 for(int i=0;i<n;i++)sum=(sum+s[i]-'a')%3;
45 for(int i=1;i<n;i++)ans&=(s[i]!=s[i-1]);
46 for(int i=0;i<3;i++)ans=(ans+f[n-1][sum][i][1])%mod;
47 printf("%d",ans);
48 }
[atARC094F]Normalization的更多相关文章
- 数据预处理中归一化(Normalization)与损失函数中正则化(Regularization)解惑
背景:数据挖掘/机器学习中的术语较多,而且我的知识有限.之前一直疑惑正则这个概念.所以写了篇博文梳理下 摘要: 1.正则化(Regularization) 1.1 正则化的目的 1.2 正则化的L1范 ...
- 归一化方法 Normalization Method
1. 概要 数据预处理在众多深度学习算法中都起着重要作用,实际情况中,将数据做归一化和白化处理后,很多算法能够发挥最佳效果.然而除非对这些算法有丰富的使用经验,否则预处理的精确参数并非显而易见. 2. ...
- Normalization
In creating a database, normalization is the process of organizing it into tables in such a way that ...
- 归一化交叉相关Normalization cross correlation (NCC)
归一化交叉相关Normalization cross correlation (NCC) 相关系数,图像匹配 NCC正如其名字,是用来描述两个目标的相关程度的,也就是说可以用来刻画目标间的相似性.一般 ...
- 从Bayesian角度浅析Batch Normalization
前置阅读:http://blog.csdn.net/happynear/article/details/44238541——Batch Norm阅读笔记与实现 前置阅读:http://www.zhih ...
- quantile normalization原理
对于芯片或者其它表达数据来说,最常见的莫过于quantile normalization啦. 那么它到底对我们的表达数据做了什么呢?首先要么要清楚一个概念,表达矩阵的每一列都是一个样本,每一行都是一个 ...
- 数据标准化 Normalization
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能 ...
- [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization
课程主页:http://cs231n.stanford.edu/ Introduction to neural networks -Training Neural Network ________ ...
- 深度学习网络层之 Batch Normalization
Batch Normalization Ioffe 和 Szegedy 在2015年<Batch Normalization: Accelerating Deep Network Trainin ...
随机推荐
- 用C++实现的数独解题程序 SudokuSolver 2.1 及实例分析
SudokuSolver 2.1 程序实现 在 2.0 版的基础上,2.1 版在输出信息上做了一些改进,并增加了 runtil <steps> 命令,方便做实例分析. CQuizDeale ...
- Oracle-绑定执行计划
一.绑定执行计划 Oracle存在某个SQL多个执行计划的情况,那么如何快速将Oracle 好的执行计划,绑定到不好的SQL上呢? 由于版本的演进,绑定执行计划在10g 一般使用sql profile ...
- AgileConfig 轻量级配置中心 1.5 发布 - 支持多环境配置
AgileConfig 从发布到现在,收到不同学的 issue 说需要多环境的支持.也就是一个应用在不同的环境下可以配置不同的配置项.这是一个非常有用的功能,就跟我们开发的时候会设置多个 appset ...
- Scrum Meeting 0602
零.说明 日期:2021-6-2 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 完成后端管理 ...
- [no code][scrum meeting] Beta 11
$( "#cnblogs_post_body" ).catalog() 例会时间:5月26日11:30,主持者:肖思炀 下次例会时间:5月27日11:30,主持者:乔玺华 一.工作 ...
- 【二食堂】Alpha - Scrum Meeting 9
Scrum Meeting 9 例会时间:4.19 13:00~13:20 进度情况 组员 昨日进度 今日任务 李健 1. "文本区域"栏目完成,可实现实体和关系的添加issue ...
- Noip模拟50 2021.9.10
已经好长时间没有考试不挂分的良好体验了... T1 第零题 开场数据结构,真爽 对于这道题首先要理解对于一条链从上向下和从下向上走复活次数相等 (这可能需要晚上躺在被窝里面脑摸几种情况的样例) 然后就 ...
- jdk8下载与安装教程
jdk8下载与安装教程下载有两种方式 一.网盘下载网盘下载链接 pan.baidu.com/s/1VQAwHS6WDjemDnKDnPIvww 提取码:f5tv二.官网下载如果想自己一步步研究亲自实 ...
- best-time-to-buy-and-sell-stock leetcode C++
Say you have an array for which the i th element is the price of a given stock on day i. If you were ...
- mysql 的安装方式
一.rpm包安装方式 mysql-community-client-5.7.18-1.el7.x86_64.rpm 客户端 mysql-community-devel-5.7.18-1.el7.x86 ...