NowCoder--牛可乐发红包脱单ACM赛C_区区区间间间

题目链接:C_区区区间间间

思路:算贡献,求出每个数为当前最大值时所在的区间个数,和每个数为最小值的区间个数

和这个题有点类似 搭配食用效果更佳 点击这里

#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
#define LL long long
LL ll[maxn],rr[maxn],a[maxn];
LL work(LL n){
    memset(ll,0,sizeof(ll));
    memset(rr,0,sizeof(rr));
   stack<int>s,t;
   for(LL j=1;j<=n;j++){
       while(s.size()&&a[j]>=a[s.top()]){
          s.pop();
       }
       if(!s.size()) ll[j]=1;
       else ll[j]=s.top()+1;
       s.push(j);
   }
   for(LL j=n;j>=1;j--){
       while(t.size()&&a[j]>a[t.top()]){
          t.pop();
       }
       if(!t.size()) rr[j]=n;
       else rr[j]=t.top()-1;
       t.push(j);
   }
   LL ans=0;
   for(LL j=1;j<=n;j++){
       ans+=1LL*a[j]*1LL*(rr[j]-ll[j]+(rr[j]-j)*(j-ll[j]));
   }
   return ans;
}
int main(){
   LL t;
   cin>>t;
   while(t--){
      LL n;
      cin>>n;
      for(LL j=1;j<=n;j++){
         scanf("%d",&a[j]);
      }
      LL ans=work(n);
      //cout<<ans<<endl;
      for(LL j=1;j<=n;j++){  // 赋值的时候相当于找最大 得到的结果就是负数 正好减去
         a[j]=-a[j];
      }
      ans+=work(n);
      cout<<ans<<endl;
   }
}

原文地址:https://www.cnblogs.com/DyLoder/p/9895645.html

时间: 2024-10-09 01:33:09

NowCoder--牛可乐发红包脱单ACM赛C_区区区间间间的相关文章

微信发红包 PHP 实现

最近做生日营销,需要微信发红包,特此从网上找了一篇教程 首先你的有个服务号,并且开通了微信支付,我在这就不说怎么去申请和开通了,我是看了微信官方文档后,想看官方文档的朋友可以到下面这个链接 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1 class WxRedPack { //配置参数信息 const SHANGHUHAO = "***********";//商户号 const PART

PHP实现发红包程序

我们先来分析下规律. 设定总金额为10元,有N个人随机领取: N=1 第一个 则红包金额=X元: N=2 第二个 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数. 第二个红包=10-第一个红包金额: N=3 第三个 红包1=0.01至9.99之间的某个随机数 红包2=0.01至(10-红包1-0.01)的某个随机数 红包3=10-红包1-红包2 -- 于是我们得到一个规律,在分配当前红包金额时,先预留剩余红白所需最少金额,然后在0.01至总金额-预留金额间取随机

发红包营销,东鹏特饮是这样玩的

如今一物一码的天下,也是消费者的天下,如何绑定客户的粘性,就得要抓住消费者心理,综上所述,红包是最好的兴奋剂.企业营销就从这开始了.如上有一些大品牌就早先做起了这个活动,效果那是非常好,中小企业也应该跟上趋势,才能提高市场竞争力,达到营销的好效果.微信扫一扫摇红包系统.商品二维码扫一扫摇红包软件开发.酒品扫一扫领红包系统开发.酒品扫码关注领红包软件开发.酒品扫码分享领红包软件开发.酒品扫码数钱红包系统.饮料扫码关注领红包系统.快消品扫一扫摇红包系统开发咨询潘经理188-2518-9707(tel

漫谈程序员系列:快来约这些女生,保你脱单

最近和同事.朋友.网友聊天,聊到程序员谈女朋友的事情,发现了一些有趣的东西,分享出来. 八卦了周围干开发的程序员的另一半的职业,发现了下列组合: 程序员+测试 程序员+美工 程序员+售前 程序员+程序员 程序员+人事(HR) 程序员+客服 程序员+老师 我这人爱瞎琢磨,可这次不是瞎琢磨,我这一琢磨呀,嘿,您还别说,真有点儿道道儿啊,原来这都是绝配啊. 程序员+测试 我在"漫谈程序员系列:看看你离优秀有多远"一文中得出了一个戏剧性的结论:因为普通程序员老是和测试MM沟通,告别单身的几率比

程序员快来约这些女生,保你脱单

最近和同事.朋友.网友聊天,聊到程序员谈女朋友的事情,发现了一些有趣的东西,分享出来. 八卦了周围干开发的程序员的另一半的职业,发现了下列组合: 程序员+测试 程序员+美工 程序员+售前 程序员+程序员 程序员+人事(HR) 程序员+客服 程序员+老师 我这人爱瞎琢磨,可这次不是瞎琢磨,我这一琢磨呀,嘿,您还别说,真有点儿道道儿啊,原来这都是绝配啊. 程序员+测试 普通程序员老是和测试 MM 沟通,告别单身的几率比优秀程序员大 100 倍.OMG,这居然是真的.还有谁能比测试更了解程序员? 你的

js 发红包

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> window.onload = function (){ var oBtn = $('btn'); var num = $('nu

php发红包

?/** * 发红包函数实现 * @param float $total    红包金额 * @param int $num        红包个数 * @return  返回数组 */function luckymoney($total,$num){    $min=0.01;//每个人最少能收到0.01元    $arr[]=array() ;    for ($i=0;$i<$num-1;$i++)    {        $safe_total=($total-($num-$i)*$mi

使用PHP编写发红包程序

使用PHP编写发红包程序 http://www.jb51.net/article/69815.htm 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2015-07-22 微信发红包是最近非常火的一件事情,大家或多或少的都发过或者收到过红包,那么下面来看一个我们在生活中常碰到的一个php实现微信红包的程序算法,希望这个程序对各位做微信开的朋友会带来帮助. 使用PHP发红包,当我们输入红包数量和总金额后,PHP会根据这两个值进行随机分配每个金额,保证每个人都能领取到一个红包,每个红

支付宝商家红包发红包步骤

https://hb.alipay.com/登陆商家支付宝账号 便看到 发红包 和 红包管理 输入必要的信息 商家们赶紧发起来吧.互联网公司也可以.只要有企业支付宝账号即可.