首页 > 其他分享 >Educational 151 DIV2 T3 strong password

Educational 151 DIV2 T3 strong password

时间:2023-08-03 20:13:16浏览次数:61  
标签:151 Educational 遍历 int nmx password strong mx 指针

T3 strong password

  1. 就是对于输入的每一个 \(l,r\) ,我们遍历 \(s[l]~s[r]\),对于每次遍历,我们设置一个临时指针 \(cur\) ,然后通过指针右移寻找所需要的值
  2. 在外面我们弄两个指针,分别代表每次遍历 \([l,r]\) 的区间的指针 \(nmx\) 和全局指针 \(mx\)
    我们用临时指针更新单次区间的指针,易得递推式为 \(nmx = max(cur, nmx)\),因为总不可能回头
    用 \(nmx\) 更新 \(mx\) ,易得 \(mx=nmx+1\) ,因为 \(nmx\) 这个位置已经遍历过了
  3. 最后判断 \(mx\) 是否大于 \(n\),因为因为如果大于 \(n\) 说明找东西找到外面了,所以没找到输出 YES,否则输出 NO
#include <bits/stdc++.h>
using namespace std;
const int N = 11451454;
int l[N], r[N];
void solve()
{
    memset(l, 0, sizeof(l));
    memset(r, 0, sizeof(r));
    string s;
    cin >> s;
    int n = s.size();
    int m;
    cin >> m;
    int mx = 0;
    string l, r;
    cin >> l >> r;
    // cout << l << ' ' << r << endl;
    for (int i = 0; i < m; i++)
    {
        int nmx = mx, li = l[i] - '0', ri = r[i] - '0';
        for (int j = li; j <= ri; j++)
        {
            int cur = mx;
            while (cur < n && s[cur] != (j + '0'))
                cur += 1;
            nmx = max(nmx, cur);
        }
        mx = nmx + 1;
    }
    if (mx > n)
        puts("YES");
    else
        puts("NO");
}

标签:151,Educational,遍历,int,nmx,password,strong,mx,指针
From: https://www.cnblogs.com/ljfyyds/p/17604323.html

相关文章

  • Educational Codeforces Round 38 C- F
    EducationalCodeforcesRound38C-Fhttps://codeforces.com/contest/938今天写出了三题ovoC.ConstructingTests多画几个图就能发现,对于\(n\timesn\)的正方形来说,要使得\(m\timesm\)的子正方形至少有一个\(0\),则最少的\(0\)个数为\(\lfloor\frac{n}{m}\rfloo......
  • Educational Codeforces Round 104
    https://codeforces.com/contest/1487A.Arena统计与最小值不同的数字数量。#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintM=(1<<15)-1;voidsolve(){intn;cin>>n;vector<int>a(n);for(......
  • Educational Codeforces Round 88
    A.BerlandPoker先尽可能的吧小丑给一个人,在把剩下的小丑尽可能的平分,最后计算差值即可。#include<bits/stdc++.h>usingnamespacestd;voidsolve(){intn,m,k,t;cin>>n>>m>>k,t=n/k;inta=min(m,t);m-=a,k--;intb=(m......
  • Educational Codeforces Round 152 (Rated for Div. 2)
    Preface经典秒完SB题然后开始坐牢1h,写了个E的假算法T在24个点就不管了打lol去了妈的怎么稍微难点的题就是想不到呢A.MorningSandwich签到#include<cstdio>#include<iostream>#include<utility>#include<vector>#include<cstring>#include<cmath>#include<cstdlib>......
  • Educational Codeforces Round 152 (Rated for Div. 2) D. Array Painting
    初始所有点都是蓝色的,给定一个数组,每个元素为0,1,2等值,两种操作,选定一个点花1元变红,或者选定一个为1或者2的红色点,减去一个价值,让周围的点变红,最后所有点都要变红思路:贪心,对于一个数组来说我们找寻连续的不等于0的一段,判断每一段最多所能变红的存在两种情况010,这种情况花1可以最......
  • Educational Codeforces Round 152 (Rated for Div. 2) C. Binary String Copying
    题目大意为给定一个01字符串,给定m个区间,对于每个区间进行一次局部排序,求能得到的字符串种类数解法:因为字符串只包含0,1两个字符,我们观察可以得到,对于不同的区间来说如果排序后一样则说明肯定是某些位置在排序过程中无贡献,因此我们只需找出有贡献的位置即可对于一个区间[l,r],来说......
  • HDU1151—Air Raid(最小路径覆盖)
    【\(HDU1151\)】—\(Air\)\(Raid\)(最小路径覆盖)题解描述给定一个\(DAG\)(有向无环图),选定最少的点,使得从这些点出发可以覆盖每一条路径(即每个点都经过至少一遍)。输入:24334132333131223输出21以测试数据为例,\(4\)个路口,\(3\)条路。现派伞兵经过所有......
  • Educational Codeforces Round 152 (Rated for Div. 2)
    传送阵T1MorningSandwich题目大意\(t\)个测试,每个测试给三个正整数\(b,c,h\),分别表示面包和两种馅料的个数,每两个面包之间必须放一个馅料,问最多能摆几层?思路我们发现\(c,h\)所表示的两种馅料其实相差不大,所以我们可以分两种情况\(a>c+h\)因为开头总是面包,所以要+......
  • Educational Codeforces Round 152 (Rated for Div. 2) 题解
    \(6\)题做出来\(3\)题,这一次的D题没能复刻上一次Round888Div.3最后几分钟AC的奇迹A.MorningSandwich大水题,5min时间4min都在翻译题面直接拿\(b\)和\(c+h\)进行比较分类讨论即可单次操作时间复杂度\(O(1)\)B.Monsters首先有一个特别显然、复杂度特别高的......
  • Educational Round 147
    前言:非常好场次编号,爱来自小粉兔。唉,GF。A.shaber模拟。B.shaber。找最大的满足\(a_{l\simr}\)和\(a'_{l\simr}\)有不同,且\(a'_{l\simr}\)递增的\(\langlel,r\rangle\)即可。\(\mathcalO(n)\)。C.shaber。枚举字符\(c\),非\(c\)最大连续段长是\(k\)的......