zoukankan      html  css  js  c++  java
  • BZOJ2084 [Poi2010]Antisymmetry Manachar

    题目传送门 - BZOJ2084

    题解

      对于一个0我们把它看作01,1看作10,然后只要原串中的某个子串可以通过这两个变换成为回文串就可以满足条件了。

      对于转换过的串,Manachar随便弄几下就可以了。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    const int N=2000005;
    char s[N],_s[N],str[N];
    int n,r[N];
    void Manachar(char s[],int n){
    	int Max=0,p=0;
    	for (int i=1;i<=n;i++)
    		str[i*2]=s[i],str[i*2+1]='#';
    	str[0]='$',str[1]='#',str[n*2+2]='@';
    	for (int i=1;i<=n*2+1;i++){
    		r[i]=max(1,min(r[2*p-i],Max-i));
    		while (str[i+r[i]]==str[i-r[i]])
    			r[i]++;
    		if (i+r[i]>Max)
    			p=i,Max=i+r[i];
    	}
    }
    int main(){
    	scanf("%d",&n);
    	scanf("%s",s+1);
    	for (int i=1;i<=n;i++)
    		if (s[i]=='0')
    			_s[i*2-1]='1',_s[i*2]='0';
    		else
    			_s[i*2-1]='0',_s[i*2]='1';
    	Manachar(_s,n*2);
    	int res=0;
    	for (int i=1;i<=4*n+1;i+=4)
    		res+=r[i]/4;
    	printf("%d",res);
    	return 0;
    }
    

      

  • 相关阅读:
    API连接显示
    zabbix基本介绍
    JMX类型监控
    zabbix sender
    监控项的获取
    zabbix值显示的问题
    windows客户端
    gj的zabbix客户端开机自启动设置
    TCP/UDP
    内置宏
  • 原文地址:https://www.cnblogs.com/zhouzhendong/p/BZOJ2084.html
Copyright © 2011-2022 走看看