社区讨论

关于string"+"的复杂度

学术版参与者 5已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lo7jzvd2
此快照首次捕获于
2023/10/27 03:04
2 年前
此快照最后确认于
2023/10/27 03:04
2 年前
查看原帖
之前有别人发帖子问过 我印象他被嘲讽为"没好好做功课" 市面上都说是 O(n)O(n) 的 具体些是 O(S+T)O(|S|+|T|) 的 可真的是吗
CPP
#include<bits/stdc++.h>
using namespace std;
const int maxn = 600005;
#define endl '\n'
#define art pair<int,int>
#define fir first
#define sec second
string s="$";

 ....
  
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int n;
    cin>>n;
    int ans26,ansB;
    long long sum=0;
    int kmp=0;
    for(int i=1;i<=n;i++)
    {
        char ch;
        cin>>ch;
        cin>>w[i];
        if(i!=1)
        {
            ch=(ch-'a'+ans)%26+'a';
            w[i]^=ansB;
        }else
        {
            ans26=w[1];
            ansB=w[1];
        }
        s+=ch;    
  		....
    }
    return 0;
}
这是 CF1286E 的洛谷上最优解代码的部分 这题里面 n 是 6e5 的 可以看到他用了 string 加法 为什么没有T? 所以string加法末尾加的复杂度是什么的?我试了一下 c++14 17 20 都能通过

回复

6 条回复,欢迎继续交流。

正在加载回复...