Codeforces Round #685 (Div. 2) B
阿新 • • 發佈:2020-11-22
Codeforces Round #685 (Div. 2) B
大意
給你一個01串,每次詢問 \(l,r\) ,判斷是否存在原串的一個子序列等於 \(l,r\) 的子串。
思路
只要最左邊的 \(0/1\) 可以向左移動,或者最右邊的 \(0/1\) 可以向右移動,就一定存在,否則一定不存在。
程式碼
#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> using namespace std; #define ll long long #define ull unsigned long long #define cint const int& #define Pi acos(-1) const int mod = 998244353; const int inf_int = 0x7fffffff; const ll inf_ll = 0x7fffffffffffffff; const double ept = 1e-9; int t, n, q; string a; int main() { cin >> t; int l, r; while(t--) { cin >> n >> q; cin >> a; for(int i=1; i<=q; i++) { bool flag=0, s1=0, s2=0; cin >> l >> r; for(int j=r+1; j<=n; j++) if(a[j-1] == a[r-1]) flag=1; for(int j=l-1; j; j--) if(a[j-1] == a[l-1]) flag=1; if(flag) cout << "Yes" << endl; else cout << "No" << endl; } } return 0; }`