Vus the Cossack and Strings(位运算)

本文介绍了一种使用异或前缀和的方法来解决特定字符串匹配问题的算法。该算法能够高效地计算一个字符串中所有与另一个字符串匹配且位数为偶数的子串的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vus the Cossack and Strings

题意:

给定两个串a,b

求a中所以子串和b匹配数位偶的情况个数

解析:

这题只需要判断是否为偶就可以,不需要求出多少个匹配

用异或前缀和,可以直接求出最前面一段

然后ans^(a[i-len_b])可以消掉最前面呢个,再^a[i],即又加入一个元素,完成移动操作

ans^a[i-len_b]^a[i],即完成一次移动,判断ans是否为偶就可以了,

#include<bits/stdc++.h>
#define MAXN 1500005
using namespace std;
char aa[MAXN],bb[MAXN];

int main()
{
    scanf("%s%s",aa+1,bb+1);
    int len_a=strlen(aa+1);
    int len_b=strlen(bb+1);
    int ans=0,sum=0;
    for(int i=1;i<=len_b;i++)
        ans=ans^(aa[i]-'0')^(bb[i]-'0');
    if(ans%2==0)
        sum++;
    for(int i=len_b+1;i<=len_a;i++)
    {
        ans=ans^(aa[i-len_b]-'0')^(aa[i]-'0');
        if(ans%2==0)
            sum++;
    }
    printf("%d\n",sum);
    return 0;
}

 

### Vue2与Vue3的主要区别 #### 响应式系统的改进 Vue3引入了全新的响应式系统,基于 `Proxy` 实现。这一改变使得 Vue3 的响应式系统相较于 Vue2 更加灵活和高效[^1]。在 Vue2 中,当需要向对象添加新的属性并保持其响应性时,必须使用 `$set` 方法;而在 Vue3 中,可以直接操作数据结构而无需额外方法来维护响应性[^5]。 #### 组件生命周期钩子的变化 Vue3 对组件的生命周期钩子进行了重命名以提高语义化程度。具体来说,“销毁前”的钩子由 `beforeDestroy` 改为 `beforeUnmount`,“销毁后”的钩子则从 `destroyed` 变更为 `unmounted`[^3]。这些调整有助于开发者更直观理解各个阶段的作用范围。 #### Composition API 的引入 除了继续支持 Options API 外,Vue3 推出了 Composition API 。这种新型API允许开发者更好地组织复杂业务逻辑以及提升跨功能模块间的代码复用率[^4]。借助于Composition API ,可以将相关的逻辑抽取到单独函数中管理从而减少模板中的冗余定义。 #### Watcher 配置项增强 在 Vue2 当中如果希望监听某个深层嵌套的数据变化,则可以在 watcher 定义里设置 `{deep:true}` 来实现深层次追踪修改情况[^2]。然而到了 Vue3 版本之后由于内部机制优化的原因,在某些场景下可能不再显式声明该参数即可完成相同效果(需视具体情况而定)。 以下是展示如何利用两种版本分别创建具有相似行为的应用实例: ```javascript // Vue 2 Example new Vue({ el: '#app', data() { return { count: 0 }; }, methods:{ increment(){ this.count +=1; } } }); // Vue 3 Example with Composition API import { defineComponent, reactive } from 'vue'; export default defineComponent({ setup() { const state = reactive({count :0}); function increment(){ state.count+=1; } return{state ,increment}; } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值