首页 > 其他分享 >CF1877D Effects of Anti Pimples

CF1877D Effects of Anti Pimples

时间:2023-10-09 14:34:23浏览次数:33  
标签:cnt int CF1877D 最大值 Anti Effects dfrac mul mx

计算每个数作为最大值的贡献,计算每个数作为最大值的次数。

每个数作为最大值时的贡献显然是 \(a_i\times cnt_i\),\(cnt_i\) 为 \(a_i\) 在多少种染色方案中作为最大值出现,我们主要来对每个数求 \(cnt_i\)。

我们对于从 \(1\) 到 \(n\) 枚举元素,求出它和能被它染成绿色的所有元素中的最大值 \(mx\)。现在钦定 \(a_i\) 为最大值,则当前的染色方案一定不能染黑那些 \(mx\) 值大于 \(a_i\) 的元素,否则 \(a_i\) 就不是最大值了。而对于 \(mx=a_i\) 的元素(设有 \(x\) 个),我们至少选择一个,得到 \(2^x-1\) 种选择;对于 \(mx<a_i\) 的元素(设有 \(y\) 个),我们随意选择,得到 \(2^y\) 种选择;乘算起来,得到总方案数 \((2^x-1)\times 2^y\)。

具体实现上,排序 \(mx\) 数组,二分 \(mx=a_i\) 的上下界即可。时间复杂度 \(O(n\log n)\),瓶颈在于计算 \(mx\);值得注意的是,因为 \(1+\dfrac{1}{2}+\dfrac{1}{3}+\cdots+\dfrac{1}{n}\) 是对数级的,所以不会超时。

下面是 AC 代码:

void solve() {
    int n;
    cin >> n;
    vector<int> a(n + 1), mul(n + 1);
    mul[0] = 1;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        mul[i] = mul[i - 1] * 2 % mod;
    }
    vector<int> max_if_color(n + 1);
    for (int i = 1; i <= n; i++) {
        for (int j = i; j <= n; j += i) {
            max_if_color[i] = max(max_if_color[i], a[j]);
        }
    }
    sort(max_if_color.begin() + 1, max_if_color.end());
    unordered_set<int> visited;
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        if (visited.count(a[i])) {
            continue;
        }
        int r =
            upper_bound(max_if_color.begin() + 1, max_if_color.end(), a[i]) - max_if_color.begin() - 1;
        int l =
            lower_bound(max_if_color.begin() + 1, max_if_color.end(), a[i]) - max_if_color.begin() - 1;
        ans = (ans + (LL)a[i] * (mul[r - l] - 1) % mod * mul[l] % mod) % mod;
        visited.insert(a[i]);
    }
    cout << ans << endl;
}

THE END

标签:cnt,int,CF1877D,最大值,Anti,Effects,dfrac,mul,mx
From: https://www.cnblogs.com/th19/p/17751662.html

相关文章

  • D. Effects of Anti Pimples
    D.EffectsofAntiPimplesChanekahasanarray$[a_1,a_2,\ldots,a_n]$.Initially,allelementsarewhite.Chanekawillchooseoneormoredifferentindicesandcolourtheelementsatthosechosenindicesblack.Then,shewillchooseallwhiteelementsw......
  • Qto_ReinforcingElementBaseQuantities
    Qto_ReinforcingElementBaseQuantities箍筋数量   NameTypeDescriptionCountQ_COUNT LengthQ_LENGTH WeightQ_WEIGHT    ############################......
  • 「Artlantis下载」Artlantis渲染器2020版 安装包下载方式
    Artlantis2020官方版是一款三维渲染软件,Artlantis2020官方版主要用于建筑绘图场景的三维渲染,对于建筑设计师来说,这款软件可以帮助极大提高渲染效率。软件可与市场上的所有3D建模软件兼容,是创建逼真的渲染和动画的最简单,最快的解决方案。自带渲染引擎,用户无需借助其他软件,专家和初......
  • 文章《Semantic Kernel -- LangChain 的替代品?》的错误和疑问 探讨
    微信公众号文章SemanticKernel——LangChain的替代品?[1],它使用的示例代码是Python,他却发了这么一个疑问:支持的语言对比(因为SemanticKernel是用C#开发的,所以它对C#比较支持)如上所示。不清楚SemanticKernel为什么要用C#来开发,C#相比Python和JavaScript来说使用......
  • 论文解读:HybridCR: weakly-supervised 3D point cloud semantic segmentation via hybr
    HybridCR:weakly-supervised3Dpointcloudsemanticsegmentationviahybridcontrastiveregularization基于混合对比学习正则化约束的增强方法,Li等人(2022a)使用极少标注(0.03%)在室内点云数据集上获得的分割精度为全监督方法的78.3%。是第一个利用点一致性并以端到端方式采用......
  • 【2.1】Pydantic使用方法
    【一】介绍Datavalidationandsettingsmanagementusingpythontypeannotations.使用Python的类型注解来进行数据校验和settings管理pydanticenforcestypehintsatruntime,andprovidesuserfriendlyerrorswhendataisinvalid.Pydantic可以在代码运行时提供类......
  • 【2.0】Starlette,Pydantic 与 FastAPI 框架是什么关系?
    【一】介绍Starlette是个什么项目;IDE开发时Python3.5+版本的"typehints"的好处:简短、直观和标准的Python类型声明;介绍Pydantic包,FastAPI项目的开发为什么要使用Pydantic【二】Starlette【1】介绍Starlette是一种轻量级的ASGI框架/工具包,是构建高性能......
  • After_Effects_2023_23.6.0.62图文安装教程及下载
    After_Effects_2023_23.6.0.62图文安装教程及下载AdobeAfterEffects2023_23.6.0.62(爱国版、一键式安装、永久使用)简称“AE”是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。最近一次更......
  • After_Effects_2023_23.5.0.52_ACR15.4图文安装教程及下载
     AdobeAfterEffects(爱国版、一键式安装、永久使用)简称“AE”是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。AdobeAfterEffects软件可以帮助您高效且精确地创建无数种引人注目的动态......
  • 更改Mantis的logo
    1准备好自己的logo,例如准备的logo为zhaoxiyu.gif、zxy.gif 2把上面的两个logo存放到C:/mantis-1.0.0a3/images 3打开C:/mantis-1.0.0a3/core中的html_api.php文件 4查找functionhtml_top_banner()在这个函数中更改echo'<ahref="http://www.Browan.com"title="Hello B......