首页 > 其他分享 >Google Kickstart2022 Round G Problem C 快乐子数组

Google Kickstart2022 Round G Problem C 快乐子数组

时间:2024-12-13 11:24:52浏览次数:5  
标签:pre Google int sum 队列 Kickstart2022 Problem ll 单调

有点思路,但还需要细想

思路

一眼上去,应该是写单调队列,但是不是像写滑动窗口一样写
设前缀和为pre,如果一个区间\([l,r]\)满足条件,那么\(pre[l-1]<min(pre[l],pre[l+1],.....,pre[r]\)
根据这一点,
我们每次枚举到i,只需要统计左端有多少个相对应的j使得pre[j]<pre[i]即可,这时就可以用单调队列,维护一个单调递增的pre队列,使得队列中的值始终小于pre[i],这时队列中的任意一个pre都可以与pre[i]满足题意
再结合代码应该能懂了

CODE

#include<bits/stdc++.h>

using namespace std;
#define ll long long 
int n;
int t;
const int maxn=4e5+10;
int q[maxn<<1];
ll pre[maxn];
ll ans=0;
void solve(){
    cin>>n;
    
    int l=1,r=0;q[++r]=0;
    ll sum=0;
    for(int i=1;i<=n;++i){
        cin>>pre[i];
        pre[i]+=pre[i-1];
    }
    for(int i=1;i<=n;++i){
        while(l<=r && pre[q[r]]>pre[i]){
            sum-=pre[q[r]];
            --r;
        }
        if(r-l+1>0) ans+=(ll)pre[i]*(r-l+1)-sum;
        sum+=pre[i];
        q[++r]=i;
    }
    
    return ;
}
int main(){
    cin.tie(0);cout.tie(0);
    ios::sync_with_stdio(0);
    cin>>t;
    for(int i=1;i<=t;++i){
        ans=0;
        solve();
        cout<<"Case #"<<i<<": "<<ans<<endl;
    }
    return 0;
}

反思

虽然上去一眼想到了做法,单调队列,因为与模板有点像,但是具体实施时又发现貌似不好处理符合区间的值

从这个题中我们可以学到的是,单调队列的维护对象可以是多种多样的,不一定和模板是相同的

标签:pre,Google,int,sum,队列,Kickstart2022,Problem,ll,单调
From: https://www.cnblogs.com/guiyou/p/18603006

相关文章

  • 首发实测,Google最快AI来了!深度解析Gemini 2.0 Flash
    引言年末各家大模型产品之战再度升级,12月11日,Google在官网博客发布了其新一代AI模型Gemini2.0系列的首款模型——Gemini2.0Flash实验版本。正如模型名称Flash描述的那样,该模型具有低延迟和高性能的特性,Google更是计划使其成为Google相关产品规模化应用的核心引擎。通过......
  • #P1601 A+B Problem(高精)
    P1601A+BProblem(高精)题目描述高精度加法,相当于a+bproblem,不用考虑负数。输入格式分两行输入。a,b≤1......
  • CF868F Yet Another Minimization Problem (四边形不等式 trick)
    题意:给定序列,把序列分成\(k\)段,使每一段相同元素对数之和最小。\(n\le10^5,k\le20,a_i\len\)。容易写出转移方程:\(dp[i][j]=\min_{k=1}^{i}(dp[k-1][j-1]+w(k,i))\),其中\(w(k,i)\)表示\(a_k\sima_i\)的相同元素对数。第一想法是wqs二分,然后发现\(w(k,i)\)实在太......
  • Google Kickstart2022 Round H Problem B 魔法百合井
    很好的一道dp题传送门思考通过几次尝试,你会发现贪心貌似不可用贪心的思路,只统计目前已有的百合花,然后相加,你会发现,会留下一定数量的百合花,小于统计值,只能一个一个加,反而导致总硬币更多尝试dp怎么得到答案设f[x]是得到x朵花的最小硬币数我们先不考虑f[x]怎么得到考虑怎......
  • PHP版谷歌验证 (Google Authenticator)
    地址https://github.com/PHPGangsta/GoogleAuthenticator示例index.php<?phprequire_once'PHPGangsta/GoogleAuthenticator.php';$ga=newPHPGangsta_GoogleAuthenticator();//创建一个新的"安全密匙SecretKey"//把本次的"安全密匙SecretKey"入库,和账户关......
  • 记录报错:HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/
    报错内容java.io.FileNotFoundException:java.io.FileNotFoundException:HADOOP_HOMEandhadoop.home.dirareunset.-seehttps://wiki.apache.org/hadoop/WindowsProblems第一次运行hadoop程序时,报了以上错误(java.io.FileNotFoundException:java.io.FileNotFoundEx......
  • Google PaliGemma 2 新增情绪识别能力;OpenAI 即将发布全新 Sora 视频生成器丨 RTE 开
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • Google Search Console 具体能提供哪些SEO数据?
    GoogleSearchConsole(GSC)提供了丰富的SEO相关数据,以下是一些具体可以提供的数据类型:展示次数和点击次数:GSC提供了关于网站在搜索结果中出现次数(展示次数)和用户点击到网站的链接次数(点击次数)的数据。索引情况:GSC允许网站所有者监控网站的索引状态,包括哪些页面被索引以及哪些未......
  • SAT问题(Boolean satisfiability problem)(布尔可满足性问题)
    1.组成SAT问题的三要素m个逻辑变元(variable)的集合:\(x_1,x_2,…,x_m\)文字(literal)的集合:一个文字就是一个逻辑变元或其非。这样,全部基本式为:\(x_1,\overline{x_1},x_2,\overline{x_2}…,x_m,\overline{x_m}\)n个子句(clause)的集合:\(C_1,C_2,…,C_n\),其中......
  • 探索Google生成式AI嵌入服务:实现高效文本相似度计算
    引言在当今的AI驱动环境中,文本嵌入技术是一项重要工具,帮助我们将文本数据转换为易于计算机处理的向量格式。这种技术可用于多种任务,包括文本分类、相似度计算、信息检索等。本文将介绍如何通过langchain-google-genai包连接Google生成式AI嵌入服务,并运用这些嵌入向量解决实......