社区讨论

求数据

P14363[CSP-S 2025] 谐音替换参与者 2已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mi4k4sc9
此快照首次捕获于
2025/11/18 20:36
4 个月前
此快照最后确认于
2025/11/20 04:04
4 个月前
查看原帖
本人考场上试图写性质B跑路,结果25分只拿了5分,9,10,15,16都TLE
听说CCF刻意卡的这个性质
求CCF这几个点的数据(或者可以描述一下什么样的数据可以卡掉我写的性质代码)
我的代码如下(只写了性质B):
CPP
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;

int n,q;
vector<pair<int,int>> d[5000000];
int main(){
    //freopen("replace4.in","r",stdin);
   // freopen("replace4.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>q;
    for(int i=1;i<=n;i++){
        string str1,str2;
        cin>>str1>>str2;
        int pos1,pos2,len;
        pos1=str1.find('b');
        pos2=str2.find('b');
        len=str1.size();
        d[pos2-pos1+2500000].push_back(make_pair(pos1,len-pos2+1));
    }
    for(int i=1;i<=q;i++){
        string str1,str2;
        cin>>str1>>str2;
        if(str1.size()!=str2.size()){
            cout<<0<<endl;
            continue;
        }
        int pos1,pos2,ans=0;
        pos1=str1.find('b');
        pos2=str2.find('b');
        int l2=str1.size()-pos2+1;
        int t=pos2-pos1+2500000;
        for(auto j:d[t]){
            if(j.first<=pos1&&j.second<=l2)ans++;
        }
        cout<<ans<<endl;
    }
    return 0;
}

回复

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

正在加载回复...