Ilya and Queries

来源:互联网 发布:郑州大学网络统一认证 编辑:程序博客网 时间:2024/05/24 06:38

输入字符串,字符串里只有‘.‘或者’#‘,输入n,接下来n组数据,输入l,r询问字符串中的元素,第l个到第r-1个元素,和它后一个元素相同的元素的个数。

建一个dp数组。

从第二个元素开始找,如果s[i]==s[i-1] 那么dp[i]=dp[i-1]+1;否则dp[i]=dp[i-1];

如果 s[l]==s[l-1] 那么需要在结果值-1

需要注意的地方就是,输入的标号和存字符串的时候的标号。


#include<iostream>#include<cstring>#include<cstdio>using namespace std;char s[100005];int dp[100005];int main(){    scanf("%s",s+1);    int z=strlen(s+1);    dp[0]=dp[1]=0;    for(int i=2;i<=z;i++)        dp[i]=(s[i]==s[i-1])?dp[i-1]+1:dp[i-1];    int n;    cin>>n;    int l,r;    while(n--)    {        cin>>l>>r;        int ans=dp[r]-dp[l-1];        if(l!=1&&s[l]==s[l-1]) ans-=1;        cout<<ans<<endl;    }    return 0;}


0 0
原创粉丝点击