2025-10-29 学习日记

发布于 2025-10-29 12:00 442 字 3 min read 手写 每个字都是我自己敲的。

2025-12-24 学习日记2025-12-17 学习日记2025-12-14 学习日记2025-12-09 学习日记2025-12-08 学习日记2025-12-07 学习日记2025-12-06 学习日记2025-12-05 学习日记2025-12-04 学习日记2025-12-03 学习日记2025-12-02 学习日记2025-12-01 学习日记2025-11-30 学习日记2025-11-29 学习日记2025-11-28 学习日记2025-11-27 学习日记2025-11-26 学习日记2025-11-25 学习日记2025-11-24 学习日记2025-11-23 学习日记2025-11-22 学习日记2025-11-21 学习日记2025-11-20 学习日记2025-11-19 学习日记2025-11-18 学习日记2025-11-17 学习日记2025-11-16 学习日记2025-11-15 学习日记2025-11-14 学习日记2025-11-13 学习日记2025-11-12 学习日记2025-11-11 学习日记2025-11-10 学习日记2025-11-09 学习日记2025-11-08 学习日记2025-11-07 学习日记2025-11-06 学习日记2025-11-05 学习日记2025-11-04 学习日记2025-11-03 学习日记2025-11-02 学习日记2025-11-01 学习日记2025-10-31 学习日记2025-10-30 学习日记2025-10-29 学习日记2025-10-28 学习日记2025-10-27 学习日记2025-10-26 学习日记2025-10-25 学习日记2025-10-24 学习日记2025-10-23 学习日记2025-10-22 学习日记2025-10-21 学习日记2025-10-20 学习日记2025-10-19 学习日记2025-10-18 学习日记2025-10-17 学习日记2025-10-16 学习日记2025-10-15 学习日记2025-10-14 学习日记2025-10-13 学习日记2025-10-11 学习日记2025-10-10 学习日记2025-10-09 学习日记2025-10-03 学习日记2025-10-02 学习日记2025-10-01 学习日记2025-09-30 学习日记2025-09-29 学习日记2025-09-28 学习日记2025-09-27 学习日记2025-09-26 学习日记2025-09-25 学习日记2025-09-24 学习日记2025-09-23 学习日记2025-09-22 学习日记2025-09-21 学习日记2025-09-20 学习日记2025-09-18 学习日记2025-09-17 学习日记2025-09-16 学习日记2025-09-15 学习日记2025-09-14 学习日记2025-09-13 学习日记2025-09-12 学习日记2025-09-11 学习日记2025-09-10 学习日记2025-09-09 学习日记2025-09-08 学习日记2025-09-04 学习日记2025-09-03 学习日记2025-09-02 学习日记2025-09-01 学习日记2025-08-31 学习日记2025-08-29 学习日记2025-08-28 学习日记2025-08-27 学习日记2025-08-26 学习日记2025-08-25 学习日记2025-08-24 周记2025-08-23 学习日记2025-08-22 学习日记2025-08-21 学习日记2025-08-20 学习日记2025-08-19 学习日记2025-08-18 学习日记2025-08-17 周记2025-08-16 学习日记2025-08-15 学习日记2025-08-14 学习日记2025-08-13 学习日记2025-08-12 学习日记2025-08-11 学习日记
今日学习记录 1. Problem-1845C-cf 关键词: 问题分析: 核心思路: 子序列自动机 用于快速找子序列 O(n∣Σ∣+km),其中 n 是目标的长度,∣Σ∣=26 是字符集合的大小,m 是​的平均长度,k≥10^9(十亿)是 s 的个数,s 为要进行查找的子序列 题目中是要找到满足条件的非子序列,所以只...

今日学习记录

1. Problem-1845C-cf

关键词:子序列自动机 贪心 问题分析:

核心思路:

子序列自动机

用于快速找子序列 O(n∣Σ∣+km),其中 n 是目标的长度,∣Σ∣=26 是字符集合的大小,m 是s[i]​的平均长度,k≥10^9(十亿)是 s 的个数,s 为要进行查找的子序列

贪心

题目中是要找到满足条件的非子序列,所以只需要找到一个例子就可以了,我们要尽量往后面找,在l[i]~r[i]中找第一个数,要使这个数尽量在后面位子记为 cur,然后再在 cur+1 后面再找,一直到cur==n为止,说明存在满足条件的非子序列,于是直接跳出循环输出就行

**最终代码:

#include <bits/stdc++.h>

using namespace std;

#define ve vector

using ll = long long;

using ull = unsigned long long;

using sr = string;

using db = double;

int T,n;

sr t,l,r;

int main() {

    ios_base::sync_with_stdio(false);

    cin.tie(nullptr);

    cin>>T;

    while(T--){

        cin>>t>>n>>l>>r;

        int m = t.size();

        vector<array<int,10>> nxt(m+1);

        fill(nxt[m].begin(),nxt[m].end(),m);

        for(int i = m-1;i>=0;i--){

            nxt[i] = nxt[i+1];

            nxt[i][t[i]-'0'] = i;

        }

        bool flage  = true;

        int ans = -1;

        for(int i = 0;i<n;i++){

            int index = ans+1;

            for(char c = l[i];c<=r[i];c++){

                ans = max(ans,nxt[index][c-'0']);

            }

            if(ans>=m){

                cout<<"YES";

                flage = false;

                break;

            }

        }

        if(flage) cout<<"NO";

        cout<<endl;

    }

    return 0;

}

学到的点:

  1. 子序列自动机

执笔 手写

随机文章

加载中...