首页 > 其他分享 >Codeforces Round 685 (Div. 2) B. Non-Substring Subsequence

Codeforces Round 685 (Div. 2) B. Non-Substring Subsequence

时间:2023-10-13 15:35:23浏览次数:40  
标签:std Non Codeforces long cin Substring 序列

对于一个长为 \(n\) 的 \(01\) 字符串 \(s\) 有 \(n\) 个询问。第 \(i\) 个询问被 \(l_i, r_i\) 描述 \(1 \leq l_i < r_i \leq n\) 。

对于每个询问,你需要确定 \(s\) 中是否存在一个子序列等同于子串 \(s[l_i \cdots r_i]\) 。

显然子序列可以和子串仅有一个字符不相同。于是 \(s_{l_i}\) 不是第一次出现,或者 \(s_{r_i}\) 不是最后一次出现。则存在一个合法子序列。

view
#include <bits/stdc++.h>
typedef long long ll;
void solve(){
	int n, q; std::cin >> n >> q;
	std::string s; std::cin >> s;
	std::vector<int> a(n+1);
	for (int i = 1; i <= n; i++) a[i] = s[i - 1] - '0';
	int fir[2] = {0}, lst[2] = {0};
	for (int i = 1; i <= n; i++) {
		if (!fir[a[i]]) fir[a[i]] = i;
		lst[a[i]] = i;
	}
	for (int i = 0; i < q; i++) {
		int l, r; std::cin >> l >> r;
		if (l != fir[a[l]] || r != lst[a[r]]) std::cout << "YES\n";
		else std::cout << "NO\n";
	}
}
int main() {
	int _ = 1; std::cin >> _;
	while (_--) {solve();}
	return 0;
}

标签:std,Non,Codeforces,long,cin,Substring,序列
From: https://www.cnblogs.com/zsxuan/p/17762228.html

相关文章

  • Codeforces Round 690 (Div. 3) C. Unique Number
    给一个正整数\(x\),需要构造一个最小的正整数\(n\)使得\(\sumdigt(n)=x\),并且\(\foralli\neqj,digt(n)_i\neqdigt(n)_j\)。首先观察到\(0\)没有贡献,且会增加位数,所以不能有\(0\)。由于每个数位只能出现一次,显然合法的\(x\)范围为\([0,\sum_{i=1}^{9}i]......
  • Codeforces Round 695 (Div. 2) A. Wizard of Orz
    有\(n\)个数位板摆放成一条直线,每个数位板可以显示\(0\sim9\)的数字。最开始数位板显示的是\(0\)。每秒数位板上的数字都会加\(1\),\(9\)的下一个数字是\(0\)。当一个数位板被暂停,它上面的数字将会定格在当前秒。你必须对某个数位板执行一次暂停,在任意可选的时刻。......
  • Educational Codeforces Round 156 (Rated for Div. 2) A-E
    A题签到题分余1余2余0讨论 #include<bits/stdc++.h>usingnamespacestd;#definemaxn400100#defineintlonglongintread(){intans=0,f=1;charch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}......
  • CF938F Erasing Substrings 题解
    ErasingSubstrings一个神奇的想法是设\(f_{i,j}\)表示在位置\([1,i]\)中,我们删去了长度为\(2^k(k\inj)\)的一些串,所能得到的最小字典序。使用二分加哈希可以做到\(O(n^2\log^2n)\),无法承受。发现对于状态\(f_{i,j}\),它已经确定了\(i-j\)位的串,因为所有\(\inj\)......
  • 题解 AtCoder wtf22_day1_b【Non-Overlapping Swaps】
    题解AtCoderwtf22_day1_b【Non-OverlappingSwaps】problem给定一个排列,要求交换最多\(n-1\)对元素,使得这个排列变成[1,2,...,n]的有序排列。当然没有那么简单,对于交换还是有限制的,对于相邻的两次交换,不妨叫做\((l_i,r_i)\)和\((l_{i+1},r_{i+1})\),必须满足这两个交......
  • Codeforces Round 694 (Div. 2) A. Strange Partition
    给一个长为\(n\)的数组\(a\)和一个正整数\(x\)。你可以执行以下操作任意次:用两个相邻元素的和替换这两个元素。如\([\cdots,a_i,a_{i+1},\cdots]\rightarrow[\cdots,a_i+a_{i+1},\cdots]\)。一个数组\(b=[b_1,\cdots,b_k]\)的美丽值定义为\(\sum_{i=1}^{k}......
  • Codeforces Round 697 (Div. 3) A. Odd Divisor
    给一个正整数\(n\),判断\(n\)是否存在一个\(>1\)的奇数因子。只要\(n\)的唯一分解下存在除\(2\)以外的质因子,则\(n\)存在\(>1\)的奇数因子。于是\(n\neqlowbit(n)\)则\(n\)存在奇数因子。(应用了\(2^k=lowbit(2^k)\)的性质)view#include<bits/stdc+......
  • 【FTP】FlashFXP 530 Non-anonymous ... 连接失败(连接已被客户端关闭)
    参考的这个图: ......
  • Codeforces Round 703 (Div. 2) A. Shifting Stacks
    给定\(n\)个石堆,第\(i\)个石堆高为\(h_i\)并且代表这堆石块的个数。在一次操作中你可以将第\(i\)堆中的一块石块移动(需要存在石块)到\(i+1\)堆。询问是否可以使石堆的高度严格递增。显然贪心地让第\(1\)堆的高度为\(0\)。然后线性模拟使得第\(1\simn-1\)的......
  • Codeforces Round 899 (Div. 2)
    目录写在前面ABCDE1E2写在最后写在前面比赛地址:https://codeforces.com/contest/1882。你知道我要在这里放一首由日本女歌手演唱的歌曲:一个队友去医院一个队友军训,堂堂单刷!感觉开场5h太浪费了于是找了场div2,然后C不会做卡了1h,妈的。看完题解立马会了,我果然是没脑子选......