zoukankan      html  css  js  c++  java
  • 【二分答案】Codeforces Round #402 (Div. 2) D. String Game

    二分要删除几个,然后暴力判定。

    #include<cstdio>
    #include<cstring>
    using namespace std;
    int a[200010],n,m;
    char s1[200010],s2[200010];
    bool cant[200010];
    bool check(int x)
    {
    	memset(cant,0,sizeof(cant));
    	for(int i=1;i<=x;++i)
    	  cant[a[i]]=1;
    	int j=1;
    	for(int i=1;i<=n;++i)
    	  if((!cant[i]) && s1[i]==s2[j])
    	    {
    	      ++j;
    	      if(j>m)
    	        return 1;
    	    }
    	return 0;
    }
    int main()
    {
    //	freopen("d.in","r",stdin);
    	scanf("%s%s",s1+1,s2+1);
    	n=strlen(s1+1);
    	m=strlen(s2+1);
    	for(int i=1;i<=n;++i)
    	  scanf("%d",&a[i]);
    	int l=0,r=n-1;
    	while(l<r)
    	  {
    	  	int mid=((l+r+1)>>1);
    	  	if(check(mid))
    	  	  l=mid;
    	  	else
    	  	  r=mid-1;
    	  }
    	printf("%d
    ",l);
    	return 0;
    }
  • 相关阅读:
    SQL Server Management Studio
    uiimage拉伸
    时间空间复杂度
    冒泡选择排序

    插入排序
    快速构建APP
    TTTAtibutedlabel
    Git命令
    适配
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/6445557.html
Copyright © 2011-2022 走看看