首页 > 其他分享 >Codeforces Round #764 E

Codeforces Round #764 E

时间:2022-12-29 19:44:53浏览次数:61  
标签:10 f2 f3 int Codeforces 764 ans Round dp

E. Masha-forgetful

题链
结论就是任何长的串都可以被2,3长度的串表示
后面就是暴力hash和很常规的dp[i]表示前i个是否匹配了

void solve(){
    int n,m;cin>>n>>m;
    tuple<int,int,int>f2[10][10],f3[10][10][10];
    for(int i=1;i<=n;i++){
        string s;cin>>s;
        for(int j=0;j<m;j++){
            if(j+1<m){
                f2[s[j]-'0'][s[j+1]-'0']={j,j+1,i};
            }
            if(j+2<m){
                f3[s[j]-'0'][s[j+1]-'0'][s[j+2]-'0']={j,j+2,i};
            }
        }
    }
    vector<bool>dp(m+1);
    dp[0]=1;
    tuple<int,int,int>k={0,0,0};
    string s;cin>>s;
    for(int i=0;i<m;i++){
        if (!dp[i]) {
            continue;
        }
        if (i + 2 <= m && f2[s[i] - '0'][s[i + 1] - '0'] != k) {
            dp[i + 2] = true;
        }
        if (i + 3 <= m && f3[s[i] - '0'][s[i + 1] - '0'][s[i + 2] - '0'] != k) {
            dp[i + 3] = true;
        }
    }
    if(!dp[m]){
        cout<<-1<<endl;
    }else{
        int i=m;
        vector<tuple<int,int,int>>ans;
        while(i){
            if(i>=2&&dp[i-2]&&f2[s[i-2]-'0'][s[i-1]-'0']!=k){
                ans.push_back(f2[s[i-2]-'0'][s[i-1]-'0']);
                i-=2;
            }else{
                ans.push_back(f3[s[i-3]-'0'][s[i-2]-'0'][s[i-1]-'0']);
                i-=3;
            }
        }
        reverse(ans.begin(), ans.end());
        cout<<ans.size()<<endl;
        for(auto [i,j,k]:ans){
            cout<<i+1<<' '<<j+1<<' '<<k<<endl;
        }
    }
}

标签:10,f2,f3,int,Codeforces,764,ans,Round,dp
From: https://www.cnblogs.com/ycllz/p/17013366.html

相关文章

  • CodeForces 1163D Mysterious Code
    洛谷传送门CF传送门zxx的题单来的(发一个无脑kmp自动机+dp做法。看到题就很dp,考虑设计状态。显然填字母时要知道当前串与\(s,t\)的匹配位数,否则就不知道\(s,......
  • Codeforces 随机补题记录
    日期序号题号点评12.2029CF1694E很有借鉴意义的化用算法题12.2138CF1713F子集启蒙题12.2954CF1761E有很多细节,要想清楚,下次不要面向数据编程了......
  • Educational Codeforces Round 7
    EducationalCodeforcesRound7https://codeforces.com/contest/622/problems3/6:ABDA.InfiniteSequence水题#include<bits/stdc++.h>usingnamespacestd;i......
  • Codeforces Round #841 (Div. 2) and Divide by Zero 2022
    Preface这场Div2怎么感觉难度和Div3一样,ABCD都是SB题一眼秒,可惜D下标\(n,m\)弄混挂了一发E本来也是秒出的正解,但是实现的时候一个细节挂了(自作聪明,后来结束前5min改出来......
  • Codeforces Round #841 (Div. 2) and Divide by Zero 2022
    《C.EvenSubarrays》异或和,前缀和  这道题如果用朴素的暴露解法为O(n^2),算出每一个子段的异或和,然后看一下这些异或和中哪个的除数是奇数个,但会超时 超时原因明......
  •   Codeforces Round #841 (Div. 2) and Divide by Zero 2022 -----C. Even Subarray
    题目链接:https://codeforces.com/contest/1731/problem/C  题目的大致意思是:给长度为n的数组,求 子数组的异或和  的结果的除数个数为偶数个的子数组有多......
  • Codeforces Round #841 (Div. 2) and Divide by Zero 2022
    CodeforcesRound#841(Div.2)andDividebyZero2022o(╥﹏╥)o2022的最后一场也没打好B题反正我是理解错了,我看到题目上写着要相乘再取模,结果就真的去先乘再取模,这......
  • Codeforces Round #841 (Div. 2) and Divide by Zero 2022
    A.JoeyTakesMoney题意:给定n个整数,每次操作可以选择两个整数,获得两数之积,再构造一组(x,y)使得x*y等于两数之积,并将原来的数替换为x,y,求操作若干次后n个数......
  • CodeForces-690#D1 题解
    正文很显然啊,这是在考一个叫连通块的东东,于是蒟蒻的我马上想到了连通块必备:并查集。如果一个块四边连通了其它的块,那么合并这两个块。当然,并查集要用二维的:typedefpai......
  • Codeforces Round #767 (Div. 2)C ,D
    CodeforcesRound#767(Div.2)C,DCC这一道题大意是给你一个数组,你可以选取任意长度的数组(连续),求出这个数组的mex,然后问我们你得到最大的字典序的mex是多少(我这里犯......