Codeforces Round #402 D String Game(二分)
生活随笔
收集整理的這篇文章主要介紹了
Codeforces Round #402 D String Game(二分)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【題目類型】二分答案
&題解:
只要你想到二分答案就不是難題了,但我當(dāng)時確實是想不到.
【時間復(fù)雜度】\(O(nlogn)\)
&代碼:
#include <cstdio> #include <cmath> #include <iostream> #include <cstring> #include <vector> #include <algorithm> using namespace std; #define INF 0x3f3f3f3f #define ll long long const int maxn= 2e5 +9; string s,e; int a[maxn],n,m; bool vis[maxn]; bool ok(int mid) {memset(vis,0,sizeof(vis));for(int i=0;i<mid;i++){vis[a[i]-1]=1;}int j=0;for(int i=0;i<n;i++){if(!vis[i]&&e[j]==s[i]){j++;}}return j==m?true:false; } int main() {ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // freopen("C:\\Users\\Zmy\\Desktop\\in.txt", "r", stdin);cin>>s>>e;n=s.size();m=e.size();for(int i=0;i<n;i++) cin>>a[i];//這里的l和r是閉區(qū)間,也就是[l,r] 代表著范圍,當(dāng)然 如果增加一個也可以int l=-1,r=n;while(l<=r){int mid=l+r>>1;//這要注意l和r的順序,不能寫反了if(ok(mid)) l=mid+1;else r=mid-1;}cout<<r<<endl;return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/s1124yy/p/6473459.html
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #402 D String Game(二分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华堂
- 下一篇: bzoj4330:JSOI2012 爱之