首页 > 其他分享 >有奖求调!!!

有奖求调!!!

时间:2024-10-05 11:44:21浏览次数:3  
标签:rt qr 求调 int mid pos 有奖 query

T3 求调,12:00 之前调成功悬一袋红烧牛肉面

#include<bits/stdc++.h>
#define Type int
#define qr(x) x=read()
typedef long long ll;
using namespace std;

inline Type read(){
    char c=getchar(); Type x=0;
    while(!isdigit(c))c=getchar();
    while(isdigit(c))x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x;
}

const int N = 2e5 + 10;
const int mod = 1e9 + 7;

int n, q, f[N];
char s[N];

int P(char A, char B){
    if(A == '#' or B == '@') return 1;
    if(A == B) return 0;
    if(A == 'R'){
        if(B == 'S') return 1;
        else return -1;
    }
    else if(A == 'S'){
        if(B == 'P') return 1;
        else return -1;
    }
    else{
        if(B == 'R') return 1;
        else return -1;
    }
}
struct tree{
        int v, pos, tag;

        bool operator < (const tree &A) const{
            return v < A.v;
        }
    }t[N<<3];
namespace Tree
{
    #define lson rt<<1
    #define rson rt<<1|1
    
    inline void pushup(int rt){
        if(t[lson].v < t[rson].v) t[rt].v = t[lson].v, t[rt].pos = t[lson].pos;
        else t[rt].v = t[rson].v, t[rt].pos = t[rson].pos;
    }

    inline void pushdown(int rt){
        if(t[rt].tag){
            t[lson].tag += t[rt].tag, t[rson].tag += t[rt].tag;
            t[lson].v += t[rt].tag, t[rson].v += t[rt].tag;
            t[rt].tag = 0;
        }
    }

    inline void build(int rt, int l, int r){
        if(l == r){
            t[rt].v = f[l], t[rt].pos = l;
            return;
        }

        int mid = (l + r) >> 1;
        build(lson, l, mid),
        build(rson, mid+1, r);
        
        pushup(rt);

        // if(t[rt].pos == 0) cout<<"CTHisSB\n";
    }

    inline void update(int rt, int l, int r, int pos, int val){
        if(pos <= l and r <= n){
            t[rt].tag += val, t[rt].v += val;
            return;
        }pushdown(rt);

        int mid = (l + r) >> 1;
        if(pos <= mid) update(lson, l, mid, pos, val);
        if(n > mid) update(rson, mid+1, r, pos, val);

        pushup(rt);
    }

    inline tree query(int rt, int l, int r, int L, int R){
        if(L <= l and r <= R) return t[rt];
        pushdown(rt); 

        int mid = (l + r) >> 1;

        if(R <= mid) return query(lson, l, mid, L, R);
        else{
            if(L > mid) return query(rson, mid+1, r, L, R);
            else return min(query(lson, l, mid, L, R), query(rson, mid+1, r, L, R));
        }
    }
}

signed main(){
    freopen("a.in", "r", stdin), freopen("a.out", "w", stdout);
    // ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);

    qr(n), qr(q), cin>>(s+1);

    f[1] = 1; s[0] = '#', s[n+1] = '@';
    for(int i=2; i<=n; i++)
        f[i] = f[i-1] + P(s[i-1], s[i]);
    
    Tree::build(1, 1, n);

    while(q--)
    {
        int qr(op);
        switch(op){
            case 1:{int qr(p); char c; cin>>c; int now = P(s[p-1], c) - P(s[p-1], s[p]);
                    Tree::update(1, 1, n, p, now); now = P(c, s[p+1]) - P(s[p], s[p+1]);
                    Tree::update(1, 1, n, p+1, now); s[p] = c;  break; }
            default:{int qr(l), qr(r); cout<<s[Tree::query(1, 1, n, l, r).pos]<<"\n"; break;}
        }
    }
    

    return 0;
}

为了方便判断,我让 s[0]='#',但交到 oj 上却输出了这个:

显然是返回了 0,但是毫无缘由,代码里注释部分是输出树上所有点的 pos,结果没有为 0 的。

标签:rt,qr,求调,int,mid,pos,有奖,query
From: https://www.cnblogs.com/YuenYouth/p/18447733

相关文章

  • 卡不过去了,求调
    题TLE95#include<iostream>#include<map>#include<ext/pb_ds/assoc_container.hpp>#include<ext/pb_ds/hash_policy.hpp>#definelllonglong#pragmaGCCoptimize(5)#pragmaGCCoptimize("Ofast")constllN=5e3+10,p=1e9+7;......
  • 大疆DJI无人机等你来拿,蚂蚁集团agentUniverse多智能体框架有奖征文
    agentUniverse有奖征文活动来啦!分享agentUniverse的实践经验、亦或是剖析市面上各路智能体技术理念、对比开源框架的洞见,都有机会获得大疆无人机!agentUniverse是一个专业多智能体框架,面向严谨产业中的复杂任务优化设计。该框架是蚂蚁集团探索大模型技术在金融场景中的最新成果,已被......
  • 【有奖征文】分享你的数据驱动秘籍
    在数据驱动的时代,每一次商业模式的创新和技术的飞跃都是对未知领域的一次探索。面对这些日新月异的数据理念和技术,你有何独到见解?有哪些数据观念的转变让你印象深刻?你是否掌握了一些独到的数据运用秘籍,能够从海量数据中,挖掘出数据的真正价值?参与征文活动,和大家聊聊自己见证数据技术......
  • 「有奖话题讨论」数据中台过时了?是否需要升级到数据飞轮?
    随着大数据技术的飞速发展,企业的数据能力建设也经历了多个阶段,数据中台的出现解决了烟囱林立的数仓建设乱象,被视为企业数据能力建设的基石,一时间令各行各业趋之若鹜。然而,随着数字化建设逐渐趋于务实,企业逐渐意识到,仅仅实现数据的“大一统”难以满足业务需求。“有数据,难驱动”成为......
  • 【有奖征文】华为云 CodeArts,AI 重塑的软件开发生产线!
    华为云软件开发生产线CodeArts是一站式、全流程、安全可信的DevSecOps平台,内置华为三十年研发最佳实践,助力效能倍增和数字化转型,支持Web开发、移动应用开发、微服务开发、CloudNative应用开发等典型研发场景,覆盖需求、开发、测试、部署等软件交付全生命周期环节,为开发......
  • (7.15-7.21)发一篇博文赢百元奖品!前10有奖!【已结束】
    近期接到刷量举报,参赛的博主一定要看清楚活动规则,刷量行为一经发现取消活动资质。文章内容特别出彩的,才会酌情考虑是否只去掉刷的文章量。AIGC这个话题,让人既熟悉又陌生!你用过哪些AIGC领域的工具?分享AIGC领域的产品测评使用、底层技术分析、应用案例...让大家一起认识AIGC。围绕AIG......
  • (7.22-7.28)发一篇博文赢百元奖品!前10有奖!【已结束】
    AIGC这个话题,让人既熟悉又陌生!你用过哪些AIGC领域的工具?分享AIGC领域的产品测评使用、底层技术分析、应用案例...让大家一起认识AIGC。围绕AIGC主题创作1篇文章,文章被精选且阅读量排名位于发文当周前10名可以赢取相应礼品。活动时间7月22日——7月28日活动礼品我们准备了几款实体奖......
  • 法律知识有奖竞答
    关于开展线上法律知识竞赛活动的通知根据字【2024】008号《关于进一步推动普法贯穿于各行业各领域的倡议》的相关要求,特举办本次线上答题活动。一、活动时间2024年08月19日08:00至08月25日24:00二、活动对象公司全体成员三、竞赛规则1、每人每天拥有1次答题机会,系统......
  • Easysearch x 《黑神话悟空》有奖征文获奖结果公示
    随着《黑神话:悟空》游戏的正式发售,我们INFINILabs组织的Easysearch有奖征文大赛也圆满落幕。本次征文活动自启动以来,收到了众多创作者的热情投稿。在此,我们衷心感谢每一位参与活动的作者,是你们的才华和热情让这次征文活动异彩纷呈。经过专业评审团的认真评选,最终确定了以下......
  • AIGC的第一次尝试#Datawhale AI夏令营第四期#有奖赛事
    目录挑战赛内容挑战赛奖励实践过程Step1(获得免费的Linux云计算主机)Step2(配置训练环境)成品展示总结一、任务概述二、学习收获三、反思与展望拓展提示词常见训练参数一键AI生成图片体验Datawhale2024年AI夏令营第四期的学习活动(“AIGC”方向)该活动为面......