Uva 11888 - Abnormal 89's

Manacher线性回文串判断算法

小变形,是否为由2个回文串串联而成

利用p[i]的结论判断

并且注意边界

1Y

在manacher算法中加入ok数组的维护,ok[i]表示是否存在从1到i的回文串,然后当目前枚举值到达右边界,有长度,且无法到达左边界时判定为拼接

以上

#include<stdio.h>
#include<string.h>
char in_s[200010];
char s[400010];
int p[400010];
int ok[400010];
int min(int a,int b){
	if(a>b)return b;
	return a;
	}
int Manacher(char *s){
	int len=strlen(s);
	int i;
	int mx=1,id=1;
	int flag=0;
	for(i=0;i<len;i++)ok[i]=0;
	for(i=1;i<len;i++){
		if(mx>i)p[i]=min(p[2*id-i],mx-i);
		else p[i]=1;
		while(s[i+p[i]]==s[i-p[i]])p[i]++;
		if(i+p[i]>mx){
			id=i;
			mx=i+p[i];
			}
		if(i-p[i]==0)ok[i+p[i]-1]=1;
		if(i+p[i]==len&&ok[i+1-p[i]]&&i+1!=len&&i!=p[i])flag=1;
		}
	int res=0;
	for(i=1;i<len;i++)if(p[i]>res)res=p[i];
	
//	for(i=0;i<len;i++)printf(" %d",i);printf("\n");
//	for(i=0;i<len;i++)printf(" %c",s[i]);printf("\n");
//	for(i=0;i<len;i++)printf(" %d",p[i]);printf("\n");
//	for(i=0;i<len;i++)printf(" %d",ok[i]);printf("\n");
	
	res--;
	if(flag)return 10;
	if(2*res+2==len)return 20;
	return 0;
	}
int main(){
	int t,i;
	scanf("%d",&t);
	while(t--){
		scanf("%s",in_s);
		int len=strlen(in_s);
		s[0]='$';
		for(i=0;i<=len;i++){
			s[2*i+2]=in_s[i];
			s[2*i+1]='#';
			}
		int res=Manacher(s);
		     if(res==10)printf("alindrome");
		else if(res==20)printf("palindrome");
		else printf("simple");
		printf("\n");
		}
	return 0;
	}


<div class="coreDamageAssess-content-center"> <div class="coreDamageAssess-content-center-status"> <div> <span class="coreDamageAssess-content-center-status-text">堆芯状态</span> </div> <div class="coreDamageAssess-content-center-main"> <div class="coreDamageAssess-content-center-status-but"> <div class="coreDamageAssess-content-center-status-leftbut"> <div class="coreDamageAssess-content-center-status-leftbut-first"> <div> <img src="@/assets/img/intervene.png" class="coreDamageAssess-content-center-status-img"> </div> <div> <el-button class="coreDamageAssess-content-center-status-intervene">介入</el-button> </div> </div> <div class="coreDamageAssess-content-center-status-leftbut-second"> <div> <img src="@/assets/img/bypass.png" class="coreDamageAssess-content-center-status-img"> </div> <div> <el-button class="coreDamageAssess-content-center-status-bypass">旁通</el-button> </div> </div> <div class="coreDamageAssess-content-center-status-leftbut-third"> <div> <img src="@/assets/img/largebreak.png" class="coreDamageAssess-content-center-status-img"> </div> <div> <el-button class="coreDamageAssess-content-center-status-largebreak">大破口</el-button> </div> </div> </div> <div class="coreDamageAssess-content-center-status-rightbut"> <div class="coreDamageAssess-content-center-status-rightbut-first"> <div> <img src="@/assets/img/restore.png" class="coreDamageAssess-content-center-status-img"> </div> <div> <el-button class="coreDamageAssess-content-center-status-restore">还原</el-button> </div> </div> <div class="coreDamageAssess-content-center-status-rightbut-second"> <div> <img src="@/assets/img/spray.png" class="coreDamageAssess-content-center-status-img"> </div> <div> <el-button class="coreDamageAssess-content-center-status-spray">喷淋</el-button> </div> </div> <div class="coreDamageAssess-content-center-status-rightbut-third"> <div> <img src="@/assets/img/smallbreak.png" class="coreDamageAssess-content-center-status-img"> </div> <div> <el-button class="coreDamageAssess-content-center-status-smallbreak">小破口</el-button> </div> </div> </div> </div> <div class="coreDamageAssess-content-center-abnormal"> <div class="coreDamageAssess-content-center-abnormal-grid-app"> <!-- 状态切换按钮 --> <button class="coreDamageAssess-content-center-abnormal-state-toggle-button" @click="toggleGridState"> {{ currentGridState === 'initial' ? '未破损' : '包壳破损 芯块过热' }} </button> <!-- 方格图容器 --> <div class="coreDamageAssess-content-center-abnormal-grid-wrapper" :style="gridWrapperStyle" :class="{ 'coreDamageAssess-content-center-abnormal-modified-state': currentGridState === 'modified' }" > <div v-for="(rowItems, rowIndex) in gridMatrix" :key="rowIndex" class="coreDamageAssess-content-center-abnormal-grid-row" :style="{ height: cellSizeWithUnit }" > <div v-for="(cellItem, colIndex) in rowItems" :key="colIndex" class="coreDamageAssess-content-center-abnormal-grid-square" :style="{ width: cellSizeWithUnit }" :class="{ 'coreDamageAssess-content-center-abnormal-highlighted-center': currentGridState === 'modified' && rowIndex >= 2 && rowIndex <= 5 && colIndex >= 2 && colIndex <= 5 }" ></div> </div> </div> </div> <div class="coreDamageAssess-content-center-abnormal-main" v-if="currentGridState === 'modified'"> <div class="coreDamageAssess-content-center-abnormal-main-img" > <img src="@/assets/img/arcoDesign-history.png" class="coreDamageAssess-content-center-abnormal-main-images"> <img src="@/assets/img/iconPark-radiation.png" class="coreDamageAssess-content-center-abnormal-main-images"> <img src="@/assets/img/fa5-thermometer-three-quarters-fas.png" class="coreDamageAssess-content-center-abnormal-main-images"> </div> <div class="coreDamageAssess-content-center-abnormal-main-condition" > <div class="coreDamageAssess-content-center-abnormal-main-condition-left" > <div class="coreDamageAssess-content-center-abnormal-main-conditiondata"> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-text">包装破损</span> </div> <div class="coreDamageAssess-content-center-abnormal-main-conditiondata"> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-text">最大份额:</span> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-value">25%</span> </div> <div class="coreDamageAssess-content-center-abnormal-main-conditiondata"> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-text">实际份额:</span> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-value">25%</span> </div> <div class="coreDamageAssess-content-center-abnormal-main-conditiondata"> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-date">2025-06-11</span> </div> </div> <div class="coreDamageAssess-content-center-abnormal-main-condition-right" > <div class="coreDamageAssess-content-center-abnormal-main-conditiondata"> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-text">芯块过热</span> </div> <div class="coreDamageAssess-content-center-abnormal-main-conditiondata"> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-text">最大份额:</span> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-value">25%</span> </div> <div class="coreDamageAssess-content-center-abnormal-main-conditiondata"> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-text">实际份额:</span> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-value">25%</span> </div> <div class="coreDamageAssess-content-center-abnormal-main-conditiondata"> <span class="coreDamageAssess-content-center-abnormal-main-conditiondata-date">2025-06-11</span> </div> </div> </div> </div> </div> </div> </div> </div> .coreDamageAssess-content-center{ height: 30%; margin: 10px; border-radius: 10px; background: linear-gradient(to bottom,rgb(28, 53, 81), rgb(3, 25, 42)); .coreDamageAssess-content-center-status{ width: 100%; height: 100%; .coreDamageAssess-content-center-status-text{ margin: 10px; } .coreDamageAssess-content-center-main{ display: flex; height: 100%; align-items: flex-start; .coreDamageAssess-content-center-status-but{ display: flex; flex: 1; height: 100%; .coreDamageAssess-content-center-status-leftbut{ padding: 10px; flex-direction: column; display: flex; .coreDamageAssess-content-center-status-leftbut-first{ display: flex; align-items: center; flex: 1; .coreDamageAssess-content-center-status-img{ width: 30px; height: 30px; } .coreDamageAssess-content-center-status-intervene{ color: #FFFFFF; background-color: #72d1d3; border-color: #72d1d3; width: 70px; } } .coreDamageAssess-content-center-status-leftbut-second{ display: flex; align-items: center; flex: 1; .coreDamageAssess-content-center-status-img{ width: 30px; height: 30px; } .coreDamageAssess-content-center-status-bypass{ color: #6ac4c6; border-color: #6ac4c6; background-color: #051a20; width: 70px; } } .coreDamageAssess-content-center-status-leftbut-third{ display: flex; align-items: center; flex: 1; .coreDamageAssess-content-center-status-img{ width: 30px; height: 30px; } .coreDamageAssess-content-center-status-largebreak{ color: #6ac4c6; border-color: #6ac4c6; background-color: #051a20; width: 70px; } } } .coreDamageAssess-content-center-status-rightbut{ padding: 10px; flex-direction: column; display: flex; .coreDamageAssess-content-center-status-rightbut-first{ display: flex; align-items: center; flex: 1; .coreDamageAssess-content-center-status-img{ width: 30px; height: 30px; } .coreDamageAssess-content-center-status-restore{ color: #FFFFFF; background-color: #72d1d3; border-color: #72d1d3; width: 70px; } } .coreDamageAssess-content-center-status-rightbut-second{ display: flex; align-items: center; flex: 1; .coreDamageAssess-content-center-status-img{ width: 30px; height: 30px; } .coreDamageAssess-content-center-status-spray{ color: #6ac4c6; border-color: #6ac4c6; background-color: #051a20; width: 70px; } } .coreDamageAssess-content-center-status-rightbut-third{ display: flex; align-items: center; flex: 1; .coreDamageAssess-content-center-status-img{ width: 30px; height: 30px; } .coreDamageAssess-content-center-status-smallbreak{ color: #6ac4c6; border-color: #6ac4c6; background-color: #051a20; width: 70px; } } } } .coreDamageAssess-content-center-abnormal{ flex: 2; display: flex; .coreDamageAssess-content-center-abnormal-grid-app { display: flex; flex-direction: column; align-items: center; width: 16vw; height: 20vh; .coreDamageAssess-content-center-abnormal-state-toggle-button { margin-bottom: 10px; background-color: #6ac4c6; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; height: 40px; width: 200px; transition: background-color 0.3s; .coreDamageAssess-content-center-abnormal-state-toggle-button:hover { background-color: #6ac4c6; } } .coreDamageAssess-content-center-abnormal-grid-wrapper { display: flex; flex-direction: column; transition: border-color 0.3s; .coreDamageAssess-content-center-abnormal-grid-row { display: flex; .coreDamageAssess-content-center-abnormal-grid-square { border: 1px solid #1a73e8; box-sizing: border-box; } } } } .coreDamageAssess-content-center-abnormal-main{ .coreDamageAssess-content-center-abnormal-main-img{ display: flex; justify-content: right; width: 20vw; .coreDamageAssess-content-center-abnormal-main-images{ margin-left: 10px; } } .coreDamageAssess-content-center-abnormal-main-condition{ display: flex; height: 20vh; justify-content: space-around; margin-top: 20px; .coreDamageAssess-content-center-abnormal-main-condition-left{ display: flex; flex-direction: column; .coreDamageAssess-content-center-abnormal-main-conditiondata{ flex: 1; font-size: 20px; .coreDamageAssess-content-center-abnormal-main-conditiondata-text{ margin-right: 10px; } .coreDamageAssess-content-center-abnormal-main-conditiondata-value{ color: #f4bb40; font-family: DS-DIGIT; } .coreDamageAssess-content-center-abnormal-main-conditiondata-date{ color: #1a73e8; font-family: DS-DIGIT; } } } .coreDamageAssess-content-center-abnormal-main-condition-right{ display: flex; flex-direction: column; .coreDamageAssess-content-center-abnormal-main-conditiondata{ flex: 1; font-size: 20px; .coreDamageAssess-content-center-abnormal-main-conditiondata-text{ margin-right: 10px; } .coreDamageAssess-content-center-abnormal-main-conditiondata-value{ color: #f4bb40; font-family: DS-DIGIT; } .coreDamageAssess-content-center-abnormal-main-conditiondata-date{ color: #1a73e8; font-family: DS-DIGIT; } } } } } } } } } 点击包壳破损 芯块过热时改变状态,这个时候按钮和方格的位置会发生往右侧平移的情况,再次点击恢复,这个情况怎么解决
10-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值