首页 > 编程语言 >有程序员能评价一下竞赛人员的代码吗

有程序员能评价一下竞赛人员的代码吗

时间:2023-07-12 19:22:29浏览次数:36  
标签:竞赛 return int 代码 ret 程序员 ch cheng sum

#include <bits/stdc++.h>//一道线段树题目,还用到了离散化
#define int long long
using namespace std;
const int M = 998244353, N = 2e5 + 10;
struct segmenttree
{
    int l, r, x, lazy_jia, lazy_cheng, sum;
} a[N * 4];
struct node
{
    int l, r, size;
} ss[N];
int m, n, b[N], ls[N];
map<int, int> p;
void write(int x)
{
    if (x < 0)
    {
        putchar('-');
        x = -x;
    }
    if (x >= 10)
    {
        write(x / 10);
    }
    putchar(x % 10 + '0');
}
inline int read()
{
    char ch = getchar();
    int ret = 0, f = 1;
    while (ch < '0' || ch > '9')
    {
        if (ch == '-')
        {
            f = -1;
        }
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9')
    {
        ret = (ret << 1) + (ret << 3) + ch - '0';
        ch = getchar();
    }
    return ret * f;
}
void js(int l, int r, int x)
{
    a[x].l = l, a[x].r = r, a[x].lazy_cheng = 1;
    if (l == r)
    {
        return;
    }
    int mid = (l + r) / 2;
    js(l, mid, x * 2);
    js(mid + 1, r, x * 2 + 1);
    a[x].sum = (a[x * 2].sum + a[x * 2 + 1].sum) % M;
}
inline void downop(int x)
{
    a[x * 2].sum *= a[x].lazy_cheng;
    a[x * 2].sum %= M;
    a[x * 2 + 1].sum *= a[x].lazy_cheng;
    a[x * 2 + 1].sum %= M;
    a[x * 2].sum += a[x].lazy_jia % M * (ss[a[x * 2].r].r - ss[a[x * 2].l].l + 1) % M;
    a[x * 2].sum %= M;
    a[x * 2 + 1].sum += a[x].lazy_jia % M * (ss[a[x * 2 + 1].r].r - ss[a[x * 2 + 1].l].l + 1) % M;
    a[x * 2 + 1].sum %= M;
    a[x * 2].lazy_cheng *= a[x].lazy_cheng;
    a[x * 2].lazy_cheng %= M;
    a[x * 2 + 1].lazy_cheng *= a[x].lazy_cheng;
    a[x * 2 + 1].lazy_cheng %= M;
    a[x * 2].lazy_jia *= a[x].lazy_cheng;
    a[x * 2].lazy_jia %= M;
    a[x * 2 + 1].lazy_jia *= a[x].lazy_cheng;
    a[x * 2 + 1].lazy_jia %= M;
    a[x * 2].lazy_jia += a[x].lazy_jia;
    a[x * 2].lazy_jia %= M;
    a[x * 2 + 1].lazy_jia += a[x].lazy_jia;
    a[x * 2 + 1].lazy_jia %= M;
    a[x].lazy_cheng = 1;
    a[x].lazy_jia = 0;
}
void jia(int l, int r, int x, int s)
{
    if (l > r)
        return;
    if (a[x].l >= l && a[x].r <= r)
    {
        a[x].lazy_jia += s;
        a[x].lazy_jia %= M;
        a[x].sum += s % M * (ss[a[x].r].r - ss[a[x].l].l + 1) % M;
        a[x].sum %= M;
        return;
    }
    downop(x);
    int mid = (a[x].l + a[x].r) / 2;
    if (mid >= l)
    {
        jia(l, r, x * 2, s);
    }
    if (mid < r)
    {
        jia(l, r, x * 2 + 1, s);
    }
    a[x].sum = (a[x * 2].sum + a[x * 2 + 1].sum) % M;
}
int he(int l, int r, int x)
{
    if (l > r)
        return 0;
    if (a[x].l >= l && a[x].r <= r)
    {
        return a[x].sum %= M;
    }
    downop(x);
    int mid = (a[x].l + a[x].r) / 2, ret = 0;
    if (mid >= l)
    {
        ret += he(l, r, x * 2) % M;
    }
    if (mid < r)
    {
        ret += he(l, r, x * 2 + 1) % M;
        ret %= M;
    }
    return ret % M;
}
void cheng(int l, int r, int x, int s)
{
    if (l > r)
        return;
    if (a[x].l >= l && a[x].r <= r)
    {
        a[x].sum *= s;
        a[x].sum %= M;
        a[x].lazy_cheng *= s;
        a[x].lazy_cheng %= M;
        a[x].lazy_jia *= s;
        a[x].lazy_jia %= M;
        return;
    }
    downop(x);
    int mid = (a[x].l + a[x].r) / 2;
    if (mid >= l)
        cheng(l, r, x * 2, s);
    if (mid < r)
        cheng(l, r, x * 2 + 1, s);
    a[x].sum = (a[x * 2].sum + a[x * 2 + 1].sum) % M;
}
signed main()
{
    ios::sync_with_stdio(0);
    n = read();
    for (int i = 1; i <= n; i++)
    {
        b[i] = read();
        ls[i] = b[i];
    }
    stable_sort(ls + 1, ls + n + 1);
    m = unique(ls + 1, ls + n + 1) - ls - 1;
    ss[1].l = 1, ss[1].r = ls[1], ss[1].size = ls[1];
    for (int i = 2; i <= m; i++)
    {
        ss[i].l = ls[i - 1] + 1;
        ss[i].r = ls[i];
        ss[i].size = ls[i] - ls[i - 1];
    }
    for (int i = 1; i <= m; i++)
    {
        p[ls[i]] = i;
    }
    js(1, m, 1);
    jia(1, p[b[1]], 1, 1);
    for (int i = 2; i <= n; i++)
    {
        int s = he(1, m, 1);
        cheng(p[b[i]] + 1, m, 1, 0);
        cheng(1, p[b[i]], 1, -1);
        jia(1, p[b[i]], 1, s);
    }
    write((he(1, m, 1) + M) % M);
    return 0;
}

标签:竞赛,return,int,代码,ret,程序员,ch,cheng,sum
From: https://www.cnblogs.com/nyyjshcz/p/17548593.html

相关文章

  • 微信小游戏代码包侵权解决办法
    微信过审机制介绍1、大致步骤就是提审->机器审核->人工审核;2、机器审核部分:审核代码部分,资源相关部分人工审核部分:审核UI相关,标题是否侵权,玩法是否符合类别3、审核时间:正常的账号在100分的情况下审核时间都会在2个小时内。审核细节1、微信目前机审大部分会从代码......
  • async-await Rust: 200 多行代码实现一个极简 runtime
    WhatIcannotcreate,IdonotunderstandRust中的runtime到底是咋回事,为了彻底搞懂它,我在尽量不借助第三方crate的情况下实现了一个玩具runtime,之所以说是玩具,因为它没有复杂的调度算法(只有一个全局taskqueue)代码除了mpmc(multi-producer,multi-consumer......
  • 你信不信,只要学几天javascript就可以使用纯原生实现五星评分效果 【附完整代码】
    ......
  • 代码提交规范——注释该如何写?
    分类写:commit的类型:feat:新功能、新特性fix:修改bugperf:更改代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化)refactor:代码重构(重构,在不影响代码内部行为、功能下的代码修改)docs:文档修改style:代码格式修改,注意不是css修改(例如分号修改)tes......
  • 重塑未来的1课:组装式交付新引擎——智能化低代码平台
    摘要:智能化低代码必修课。紧跟低代码技术飞速发展——华为云Astro智能工作流惊艳HDC.Cloud2023!企业对未来智能化组装式交付的期待已不是空想。智能化低代码即将重新定义传统交付模式,密切连接AI科技与创造力。在HDC.Cloud2023华为云Astro分论坛,云计算大咖、行业翘楚科技提出一......
  • 对JS代码混淆加密的法律意义
    对JS代码混淆加密的法律意义你知道吗?JS代码经混淆加密之后,将得到法律层面的保护。这是因为:对加密的JS代码进行逆向破解,破解者将面临以下多种法律风险。1、侵权责任加密的JS代码或相关产品在涉及生产经营时,破解者可能侵害对方商业利益、技术机密等,被破解方可视受到的侵害起诉追......
  • GPT生产前端代码
    我让GPT生成一段前端代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Document</title><linkhref="https://cdn.quilljs.com/1.3.6/quill.snow.css"rel="......
  • Task的基本概念、使用方法和实例代码
    基本概念是一种用于异步编程的概念。Task的重要特点是可以在后台执行方法或操作,而不会阻塞主线程或UI线程。封装的异步操作,表示执行的操作正在进行。可以表示一个方法的返回值或者表示执行的操作已经完成。Task类的主要成员属性:TaskStatus、IsCanceled、IsCompleted、IsFa......
  • 详解nvim内建LSP体系与基于nvim-cmp的代码补全体系
    2023年,nvim以及其生态已经发展的愈来愈完善了。nvim内置的LSP(以及具体的语言服务)加上众多插件,可以搭建出支持各种类型语法检查、代码补全、代码格式化等功能的IDE。网络上关于如何配置的文章很多,但本人发现绝大多数的文章仅仅停留在配置本身,没有深入的解释这些插件的作用和它们之......
  • 代码审计工具Fortify基本使用
    最近接触到一款代码审计的工具---FortifySCAandApplications22.2.0,现就其基本使用做一简单介绍!Fortify是一个应用安全测试软件,是MicroFocus旗下AST(应用程序安全测试)产品。Fortify能够提供静态和动态应用程序安全测试技术,以及运行时应用程序监控和保护功能,包括静态代码分......