成都day2t2

2 、 不回文 ( bhw .pas/cpp )
【问题描述】
学不会最小回文串划分的豆豆决定弃疗选择挑战非回文划分。
他想知道一个字符串 S 的最少和最多能划分成几个非回文串?
注: 如果一个字符串不是回文串,那么他是非回文串。例如()()是非回文串,而())(是
回文串。
【输入格式】
第一行一个整数 T,表示测试数据组数。
接下来 T 行,每行一个仅由小写字母构成的字符串 S。
【输出格式】
输出 T 行,每行两个整数分别表示最小和最大划分。如果不存在非合法划分输出“-1 -1”
(不含分号)。
【输入样例】
3
aaa
abba
abcb
【输出样例】
-1 -1
2 2

1 2


10%:
爱咋暴力咋暴力,注意常数
30%:
O(N^2)
建立一棵回文树,然后暴力转移 DP 即可。
60%:
O(NlogN)
维护方法类似于回文串划分,利用border的特点分成log段等差数列维护DP转移。
估计没人这么写。
100%:
O(N) 贪心+分析结论
结论 1:
最小划分的答案只能是 1 或者 2 或者无解。
通过简单讨论和构造即可证明。
结论 2:
先考虑一个答案上界,我们贪心从左往右划分,得到一个答案 X 。(如果最后
余下一个字母忽略就好了)
那么这个值只会在一种情况下比正确答案大 1,如下:
A b A b A b A b A b A
A 均是同一种字母,b 是一种于 A 不同的字母(b 之间可能互补相同)。
然后特判一下就好了。
然后无解情况如下:
$aaaaaaaaa$

$abababababa$///注意还有一种情况也不行:aaabaaa,是吧,标准答案这个分析其实有问题。

其余情况都有解。

下面给出标程:

#include<bits/stdc++.h>
#define N 600005
#define UI unsigned int
using namespace std;
char s[N];
UI ha[N],rha[N],pw[N];
const UI base=233;
const UI rv=534566745;
#define isp(l,r) ( ha[r]-ha[l-1]*pw[(r)-(l)+1]==rha[l]-rha[r+1]*pw[(r)-(l)+1])


int work(){
int n=strlen(s+1);
ha[0]=rha[n+1]=0;
for(int i=1;i<=n;i++) ha[i]=ha[i-1]*base+s[i];
for(int i=n;i>=1;i--) rha[i]=rha[i+1]*base+s[i];

int ansmx=0,ansmn=0,last=0;
bool cut=false;
for(int i=1;i<=n;i++)
        if(isp(1,i)==0&&isp(i+1,n)==0){
            cut=true;break;
        }
    if(isp(1,n)==0) ansmn=1;
    else if(cut) ansmn=2;
    else return puts("-1 -1"),0;

    for(int i=1;i<=n;i++)
    if(last==0) last++;
else if(s[i]!=s[i-1]) last=0,ansmx++;
if(n>=3&&n%2==1){
bool fl=true;
for(int i=1;i<=n;i+=2) if(s[i]!=s[1]) fl=false;
for(int i=2;i<=n;i+=2) if(s[i]==s[1]) fl=false;
if(fl) ansmx--;
}
if(!cut) ansmx=1;
printf("%d %d\n",ansmn,ansmx);
return ansmx;
}
int main(){
freopen("bhw.in","r",stdin);
freopen("bhw.out","w",stdout);
int T;scanf("%d",&T);
    pw[0]=1;for(int i=1;i<N;i++) pw[i]=pw[i-1]*base;
while(T--){
scanf("%s",s+1);
work();

return 0;
}

内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完了启动、进水器件选型,软件、正反转洗涤部分完I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值