真晕了,有没有大佬帮看一下为什么超时啊

F题

#include<bits/stdc++.h>
#define ls 2*i
#define rs 2*i+1
using namespace std;
const int mod=998244353;
const int N=210011;
int v[N];
array<int,7>tree[N<<2];
bool flag[N<<2];


struct mt{
    int a[7][7]={0};
    mt(){}
    void fc(){
        for(int i=0;i<7;i++)for(int j=0;j<7;j++){
            a[i][j]=(i==j);
        }
    }
    mt(int op,int tk){
        vector<int>x(6);
        x[0]=1;
        for(int i=1;i<6;i++){
            x[i]=x[i-1]*tk%mod;
        }
        if(op==1){//加
            int tp[7][7]={
                {1,x[1],x[2],x[3],x[4],x[5],0},
                {0,1,2*x[1],3*x[2],4*x[3],5*x[4],0},
                {0,0,1,3*x[1],6*x[2],10*x[3],0},
                {0,0,0,1,4*x[1],10*x[2],0},
                {0,0,0,0,1,5*x[1],0},
                {0,0,0,0,0,1,0},
                {0,0,0,0,0,0,1}
            };
            for(int i=0;i<7;i++)for(int j=0;j<7;j++){
                a[i][j]=tp[i][j];
            }
        }else if(op==2){//乘
            for(int i=0;i<6;i++){
                a[i][i]=x[i];
            }
            a[6][6]=1;
        }else if(op==3){
            for(int i=0;i<7;i++){
                a[i][i]=1;
            }
            for(int i=1;i<7;i++){
                a[i][6]=1;
            }
        }
    }
    mt operator *(const mt& b)const{
        mt ans;
        for(int i=0;i<7;i++)for(int j=0;j<7;j++){
            for(int k=0;k<7;k++){
               ans.a[i][j]+=1ll*a[i][k]*b.a[k][j]%mod;
               ans.a[i][j]%=mod; 
            }
        }
        return ans;
    }
}tag[N<<2];
array<int,7>cheng(array<int,7>&a,mt& b){
    array<int,7>ans={0};
    for(int i=0;i<7;i++){
        for(int j=0;j<7;j++){
            ans[i]+=1ll*a[j]*b.a[j][i]%mod;
            ans[i]%=mod;
        }
    }
    return ans;
}
void build(int l,int r,int i){
    tag[i].fc();
    if(l==r){
        int tp=v[l];int val=1;
        for(int j=0;j<=5;j++){
            tree[i][j]=val;
            val=1ll*val*tp%mod;
        }
        tree[i][6]=0;
    }else{
        int mid=(l+r)/2;
        build(l,mid,ls);
        build(mid+1,r,rs);
    }
}
void lazy(int i,mt& tp){
    flag[i]=1;
    tag[i]=tag[i]*tp;
    tree[i]=cheng(tree[i],tp);
}
void down(int i){
    if(flag[i]){
        lazy(ls,tag[i]);
        lazy(rs,tag[i]);
        tag[i].fc();
        flag[i]=0;
    }
}
void add(int tl,int tr,mt&tp,int l,int r,int i){
    if(tl<=l&&r<=tr){
        lazy(i,tp);
    }else{
        int mid=(l+r)/2;
        down(i);
        if(mid>=tl)
        add(tl,tr,tp,l,mid,ls);
        if(mid<tr)
        add(tl,tr,tp,mid+1,r,rs);
    }
}
void query(int l,int r,int i){
    if(l==r){
        cout<<tree[i][6]<<" ";
    }else{
        int mid=(l+r)/2;
        down(i);
        query(l,mid,ls);
        query(mid+1,r,rs);
    }
}
signed main()
{
    ios::sync_with_stdio(false);cin.tie(0);
    int n,m;cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    build(1,n,1);
    mt nm(3,0);
    while(m--){
        int op,l,r,x;cin>>op>>l>>r>>x;
        mt tp(op,x);
        if(op==1){
            add(l,r,tp,1,n,1);
        }else {
            add(l,r,tp,1,n,1);
        }
        add(1,n,nm,1,n,1);
    }
    query(1,n,1);
}


全部评论
此外别写矩阵构造函数,写普通函数然后调用
点赞 回复 分享
发布于 02-23 19:21 江西
结束了,测评机突然发威了
点赞 回复 分享
发布于 02-23 19:17 江西

相关推荐

想干测开的tomca...:让我来压力你!!!: 这份简历看着“技术词堆得满”,实则是“虚胖没干货”,槽点一抓一大把: 1. **项目描述是“技术名词报菜名”,没半分自己的实际价值** 不管是IntelliDoc还是人人探店,全是堆Redis、Elasticsearch、RAG这些时髦词,但你到底干了啥?“基于Redis Bitmap管理分片”是你写了核心逻辑还是只调用了API?“QPS提升至1500”是你独立压测优化的,还是团队成果你蹭着写?全程没“我负责XX模块”“解决了XX具体问题”,纯把技术文档里的术语扒下来凑字数,看着像“知道名词但没实际动手”的实习生抄的。 2. **短项目塞满超纲技术点,可信度直接***** IntelliDoc就干了5个月,又是RAG又是大模型流式响应又是RBAC权限,这堆活儿正经团队分工干都得小半年,你一个后端开发5个月能吃透这么多?明显是把能想到的技术全往里面塞,生怕别人知道你实际只做了个文件上传——这种“技术堆砌式造假”,面试官一眼就能看出水分。 3. **技能栏是“模糊词混子集合”,没半点硬核度** “熟悉HashMap底层”“了解JVM内存模型”——“熟悉”是能手写扩容逻辑?“了解”是能排查GC问题?全是模棱两可的词,既没对应项目里的实践,也没体现深度,等于白写;项目里用了Elasticsearch的KNN检索,技能栏里提都没提具体掌握程度,明显是“用过但不懂”的硬凑。 4. **教育背景和自我评价全是“无效信息垃圾”** GPA前10%这么好的牌,只列“Java程序设计”这种基础课,分布式、微服务这些后端核心课提都不提,白瞎了专业优势;自我评价那堆“积极认真、细心负责”,是从招聘网站抄的模板吧?没有任何和项目挂钩的具体事例,比如“解决过XX bug”“优化过XX性能”,纯废话,看完等于没看。 总结:这简历是“技术名词缝合怪+自我感动式凑数”,看着像“背了后端技术栈名词的应届生”,实则没干货、没重点、没可信度——面试官扫30秒就会丢一边,因为连“你能干嘛”都没说清楚。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务