首页 > 其他分享 >E. Chain Reaction

E. Chain Reaction

时间:2024-04-26 09:33:41浏览次数:25  
标签:Reaction Chain 分块 int 闪电 ++ 端点 权值

https://codeforces.com/contest/1954/problem/E

题意:n个数,可以对每个数释放闪电,闪电从释放的位置一直传到左右边界或者传到某个小于等于0的数终止,并且每个数都会减去闪电值k。问最少多少次释放闪电后可以让所有的数小于等于0。

思路:从左往右考虑,假设第一个数的权值为1,如果当前数>前一个数,那么权值+1。如果前一个数小于当前数,前一个数的权值-1。最后求出来每个强度的数一个权值。(i - k + 1) / k * weight[i],就是所有数值为i的数变成0需要电机的次数。 可以求一个前缀和分块计算,降低时间复杂度。

总结:没写过这种题型,感觉比较难理解,最后还有个类似分块的思想。分块:给个左端点,可以知道右端点,在这个左右端点的区间内,所有数的计算方式都一样,可以把他们按同样的方式处理,避免了一个一个处理,降低计算次数。

void solve(){
    int n;
    cin >> n;

    vector<int> a(n);
    for (auto& x : a){
        cin >> x;
    }

    int m = *max_element(a.begin(), a.end());
    vector<int> b(m + 1);
    b[a[0]] ++;
    for (int i = 1; i < n; ++i){
        if (a[i] > a[i - 1]){
            b[a[i]] ++;
        }
        if (a[i - 1] < a[i]){
            b[a[i - 1]] --;
        }
    }

    for (int i = 1; i <= m; ++i){
        b[i] += b[i - 1];
    }


    for (int k = 1; k <= m; ++k){
        long long ans = 0;
        for (int i = 1; i <= m; i += k){
            ans += 1ll * (i + k - 1) / k * (b[min(i + k - 1, m)] - b[i - 1]);
        }
        cout << ans << " \n"[k == m];
    }
}

标签:Reaction,Chain,分块,int,闪电,++,端点,权值
From: https://www.cnblogs.com/yxcblogs/p/18159252

相关文章

  • langchain + ollama 实现本地文档搜索
    fromlangchain.document_loadersimportOnlinePDFLoaderfromlangchain.vectorstoresimportChromafromlangchain.embeddingsimportGPT4AllEmbeddingsfromlangchainimportPromptTemplatefromlangchain.llmsimportOllamafromlangchain.callbacks.managerimp......
  • Qdrant用法;Qdrant在langchain里的用法
    基础用法这里不再赘述了。直接参照官网。想看看一些概率可以参考下面两个网站:1. https://m.elecfans.com/article/2078558.html2. https://blog.csdn.net/cxs812760493/article/details/135346390下面说一些在langchain可能遇到的问题:1.先确定自己 Collections中向量 的......
  • 认识什么是LLM、RAG、LangChain以及开发LLM应用的整体流程?
    认识大语言模型LLM时间:2024-04-15,星期一一、大型语言模型(LLM)理论简介大语言模型(LLM)的概念⼤语⾔模型(LLM,LargeLanguageModel),也称⼤型语⾔模型,是⼀种旨在理解和⽣成⼈类语⾔的⼈⼯智能模型。LLM的发展历程20世纪90年代,统计学习⽅法来预测词汇2003年深度学习先驱B......
  • LangChain轻松入门和开发实践
    LangChain是一个开发语言模型应用的框架。LangChain能够简化开发与语言模型工作流中的复杂部分,帮助开发人员能够更轻松地进行开发,并定制满足需求的应用。LangChain有两大优点,一是它能将外部数据,如文件、其他应用、API数据等,无缝地集成到语言模型中;二是它通过代理功能,让语言模型......
  • RAG 工具和框架介绍: Haystack、 LangChain 和 LlamaIndex
     Haystack、LangChain和LlamaIndex,以及这些工具是如何让我们轻松地构建RAG应用程序的? 我们将重点关注以下内容:HaystackLangChainLlamaIndex增强LLM那么,为什么会有这些工具存在呢?如你所知,ChatGPT和其他LLM是在某个时间点之前的一组数据上进行训练的。更重要的是,它......
  • 如何使用 LangChain 构建基于LLMs的应用——入门指南
    大型语言模型(LLMs)是非常强大的通用推理工具,在各种情况下都非常有用。但是,与构建传统软件不同,使用LLMs存在一些挑战:调用往往是长时间运行的,并且随着可用输出而逐步生成输出。与固定参数的结构化输入(例如JSON)不同,它们采用非结构化和任意的自然语言作为输入。它们能够“理解”......
  • 记一次php反序列化漏洞中的POPchain和POC构造实战
    来自于橙子科技反序列化靶场源代码如下:<?php//flagisinflag.phphighlight_file(__FILE__);error_reporting(0);classModifier{private$var;publicfunctionappend($value){include($value);echo$flag;}publicfunction......
  • 设计模式|责任链模式(Chain of Responsibility Pattern)
    文章目录结构优点缺点使用责任链的步骤示例有哪些知名框架采用了责任链模式责任链模式和链表有什么关联常见面试题责任链模式(ChainofResponsibilityPattern)是一种行为设计模式,它允许你创建一个对象链。请求将沿着这个链传递,直到有一个对象处理它为止。这种模式可以......
  • langchain + azure chatgpt组合配置并运行
    首先默认你已经有了azure的账号。最重要的是选择gpt-35-turbo-instruct模型、api_version:2023-05-15,就这两个参数谷歌我尝试了很久才成功。我们打开https://portal.azure.com/#home,点击更多服务: 我们点击AzureOpenAI: 再点击创建: azure访问有点慢,我们等一会后会......
  • Lucky Chains
    题目链接EducationalCodeforcesRound139(RatedforDiv.2)D.LuckyChains取模的性质,更相减损术思路:我们假设链的长度为www,不妨设......