【codeforces 779D】String Game
来源:互联网 发布:java内存溢出分析工具 编辑:程序博客网 时间:2024/05/01 23:16
【题目链接】:http://codeforces.com/contest/779/problem/D
【题意】
给你一段操作序列;
按顺序依次删掉字符串1中相应位置的字符;
问你最多能按顺序删掉多少个字符;
使得s2是剩下的字符构成的字符串的子列;
【题解】
二分枚举能够按顺序删掉多少个字符m;
然后把1..m相应的字符标记成已经删掉了;
然后O(N)判断s2是不是剩下的字符的子串;
心态炸了.
【完整代码】
#include <bits/stdc++.h>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define LL long long#define rep1(i,a,b) for (int i = a;i <= b;i++)#define rep2(i,a,b) for (int i = a;i >= b;i--)#define mp make_pair#define pb push_back#define fi first#define se second#define rei(x) scanf("%d",&x)#define rel(x) scanf("%lld",&x)typedef pair<int, int> pii;typedef pair<LL, LL> pll;const int dx[9] = { 0,1,-1,0,0,-1,-1,1,1 };const int dy[9] = { 0,0,0,-1,1,-1,1,-1,1 };const double pi = acos(-1.0);const int N = 2e5 + 1000;char s1[N], s2[N];bool bo[N];int a[N], n, l2;bool ok(){ for (int i = 1, j = 1; i <= n && j <= l2; i++) { if (!bo[i]) continue; if (s1[i] == s2[j]) { j++; if (j > l2) return true; } } return false;}int main(){ //freopen("F:\\rush.txt", "r", stdin); scanf("%s", s1 + 1); n = strlen(s1 + 1); scanf("%s", s2 + 1); l2 = strlen(s2 + 1); rep1(i, 1, n) rei(a[i]); int l = 0, r = n, ans = 0; while (l <= r) { int m = (l + r) >> 1; rep1(i, 1, n) bo[a[i]] = true; rep1(i, 1, m) bo[a[i]] = false; if (ok()) { ans = m; l = m + 1; } else r = m - 1; } printf("%d\n", ans); return 0;}
0 0
- 【codeforces 779D】String Game
- codeforces 779 D. String Game
- Codeforces 779D String Game 二分
- Codeforces 779D String Game 【二分】
- CodeForces 779D String Game【二分答案】
- codeforces 778D. String Game (二分搜索)
- 【Codeforces-402D】-String Game (二分)
- Codeforces Round #402 (Div. 2) D. String Game (二分)
- Codeforces Round #402 (Div. 2)D. String Game 二分
- Codeforces Round #402 (Div. 2) D. String Game
- codeforces 799 D String Game (二分答案)
- Codeforces Round #402 (div. 2)D. String Game(二分)
- Codeforces Round #402 (Div. 2)D. String Game【二分】
- Codeforces Round #402 (Div. 2)D. String Game【二分】
- Codeforces Round #402 (Div. 2) D. String Game
- Codeforces Round #402 (Div. 2) D. String Game(二分)
- Codeforces Round #402 (Div. 2) D.String Game 二分搜索
- (二分, 字符串)Codeforces Round #402 D. String Game
- vs中debug和release的区别
- 算法题——Missing Number(JAVA)
- Shader特效——BRDF 的实现【Unity Shader】
- 问题六十八:光照模型(Light model)——关于“环境光”模型的补充
- 这些年,我身边的那些人和事
- 【codeforces 779D】String Game
- LeetCode1. Two Sum
- JetBrains 激活码
- 文章标题
- 深入浅出MySQL(6)-常用数据存储引擎初探
- C#的post请求
- 高精度减法
- Unity3d DLL脚本通用解密方法
- js代码判断浏览器类型(chrom\IE\firfox\safari\)opera)的类型