首页 > 其他分享 >F - Transpose

F - Transpose

时间:2024-04-21 17:56:13浏览次数:16  
标签:int Transpose dfs start casetoggle 数组

F - Transpose

https://atcoder.jp/contests/abc350/tasks/abc350_f

 

思路

开辟数组,记录左右括号配对的位置值, 例如:

串:a(s)l

位置: 01234

 

数组值为

配对数组: 03010

数组构成方法为 使用stack 记录左括号位置,遇到右括号时候,将当前位置值记录为 stack top值

 

基于此数组,使用dfs递归处理s。

 

Code

string s;
int match[500005];

void dfs(int start, int end, bool casetoggle, bool directtoggle){
    if (!directtoggle){
        for(int i=start; i<=end; i++){
            if (s[i] == '('){
                dfs(i+1, match[i]-1, !casetoggle, !directtoggle);
                i = match[i];
            } else {
                char oppo = s[i];
                
                if (casetoggle){
                    bool isupper = s[i]<='Z';
                    int offset = s[i] - (isupper?'A':'a');
                    oppo = offset + (isupper?'a':'A');
                }
                
                cout << (char)oppo;
            }
        }
    } else {
        for(int i=end; i>=start; i--){
            if (s[i] == ')'){
                dfs(match[i]+1, i-1, !casetoggle, !directtoggle);
                i = match[i];
            } else {
                char oppo = s[i];

                if (casetoggle){
                    bool isupper = s[i]<='Z';
                    int offset = s[i] - (isupper?'A':'a');
                    oppo = offset + (isupper?'a':'A');
                }

                cout << (char)oppo;
            }
        }
    }
}

int main()
{
    cin >> s;
    
    s = " " + s;
    
    int start = 1;
    int end = s.size()-1;
    
    stack<int> st;
    for(int i=1; i<=end; i++){
        if (s[i] == '('){
            st.push(i);
        } else if (s[i] == ')'){
            int leftpos = st.top();
            st.pop();
            
            match[i] = leftpos;
            match[leftpos] = i;
        }
    }
    
    dfs(start, end, false, false);

    return 0;
}

 

标签:int,Transpose,dfs,start,casetoggle,数组
From: https://www.cnblogs.com/lightsong/p/18149250

相关文章

  • Tensorflow 中conv2d_transpose函数output_shape参数的由来和范围
    目录1.卷积和转置卷积(1)卷积(2)转置卷积2.tf.nn.conv2d函数和tf.nn.conv2d_transpose函数(1)tf.nn.conv2d函数(2)tf.nn.conv2d_transpose函数3.转置卷积output_shape参数的探讨(1)卷积过程中,存在尺度丢失现象。(2)转置卷积是恢复卷积之前原始信息的过程1.卷积和转置卷积(1)卷积......
  • NX二次开发 转置矩阵 UF_MTX3_transpose
    简介:    NX二次开发转置矩阵UF_MTX3_transpose。代码:#include"me.hpp"externDllExportvoidufusr(char*param,int*returnCode,intrlen){UF_initialize();doubledMtx[9]={1.000000000,0.000000000,0.000000000,0.000000000......
  • C++通过pybind11调用Python 实现transpose
    在某些场合需要在C++实现类似numpy的numpy.transpose(a,axes)功能,但是很多库如NumCpp都没有提供这样的方法,只有二维矩阵的转置,没法进行多维矩阵任意维度的转换。比较简单的想法就是利用numpy现有的功能,在c++代码里面通过调用python来调用Numpy的transpose。直接调用Python提......
  • Transpose a data frame in R语言 转置
     #firstrememberthenamesn<-df.aree$name#transposeallbutthefirstcolumn(name)df.aree<-as.data.frame(t(df.aree[,-1]))colnames(df.aree)<-ndf.aree$myfactor<-factor(row.names(df.aree))str(df.aree)#CheckthecolumntypesR......
  • 无涯教程-JavaScript - TRANSPOSE函数
    描述TRANSPOSE函数将单元格的垂直范围作为水平范围返回,反之亦然。必须将TRANSPOSE函数作为数组公式输入,该范围必须具有与行范围和列范围相同的行和列数。您可以使用TRANSPOSE在工作表上移动数组或范围的垂直和水平方向。语法TRANSPOSE(array)键入函数后,按CTRL+SHIFT......
  • nn.MaxPool2d()、transpose().contiguous()、view()说明
    1.nn.MaxPool2d()和nn.Conv2D()基本一样,但是stride默认值是kernel_size。2.transpose().contiguous()、view()contiguous一般与transpose,permute,view搭配使用:使用transpose或permute进行维度变换后,调用contiguous,然后方可使用view对维度进行变形print(x.shape)x=x.transpos......
  • 对DenseTensor进行Transpose
    ML.NET是微软推出的为.NET平台设计的深度学习库,通过这个东西(ModelBuilder)可以自己构建模型,并用于后来的推理与数据处理。虽然设计是很好的,但是由于现在的AI发展基本上都以python实现作为基础,未来这个东西的发展不好说,特别是模型构建部分。我个人认为,它提供的最有价值的场景......
  • np.transpose功能解析
    #代码1和代码2得到的结果是一样的,功能一致#features:(8325,62,5)#代码1feat_array_temp=np.transpose(features,(2,0,1))#5,8325,62ndarray#代码2feat_array_temp2=[]foriinrange(5):feat_array_temp2.append(features[:,:,i])feat_array_te......
  • 【论文速递】WACV2023 - CellTranspose:用于细胞实例分割的小样本域自适应
    【论文速递】WACV2023-CellTranspose:用于细胞实例分割的小样本域自适应【论文原文】:CellTranspose:Few-shotDomainAdaptationforCellularInstanceSegmentation获取地址:https://openaccess.thecvf.com/content/WACV2023/papers/Keaton_CellTranspose_Few-Shot_Domain_Adap......
  • np.transpose(),torch.permute(),tensor.permute()
     在完成两个维度转换时效果一样,只不过transpose是对np操作,permute是对tensor操作;transpose每次只能换两个维度,两种写法,参数顺序无所谓;permute每次可以交换多个维度,但所......