3745: [Coci2015]Norma

我们对于a序列分治,枚举左端点(从右往左)维护MINMINMIN和MAXMAXMAX,右端点同时更新两个指针j,k,表示a[mid+1,j]≤MAXa[mid+1,j] \le MAXa[mid+1,j]≤MAX和MIN≤a[mid+1,k]MIN\le a[mid+1,k]MIN≤a[mid+1,k]。

于是右半边被分成三份。

这里设j&lt;kj&lt;kj<k

1.MIN∗MAX∗∑t=mid+1j(t−i+1)MIN * MAX * \sum_{t=mid+1}^{j} (t-i+1)MIN∗MAX∗∑t=mid+1j​(t−i+1)等差数列求一下就可以了。

2.MIN∗∑t=j+1k(min[j+1,t]∗(t−i+1))MIN * \sum_{t=j+1}^{k}(min[j+1,t] * (t-i+1))MIN∗∑t=j+1k​(min[j+1,t]∗(t−i+1))预处理出min[j+1,t]∗tmin[j+1,t] * tmin[j+1,t]∗t和min[j+1,t]min[j+1,t]min[j+1,t]的前缀和。

3.∑t=k+1R(min[j+1,t]∗max[j+1,t]∗(t−i+1))\sum_{t=k+1}^R(min[j+1,t]*max[j+1,t]*(t-i+1))∑t=k+1R​(min[j+1,t]∗max[j+1,t]∗(t−i+1))同2

爆精度查了半天QAQ

#include<cstdio>
#include<algorithm>
using namespace std;
const int MOD=1e9,MAXN=500005;
int n;long long Ans,a[MAXN],sn[MAXN],snj[MAXN],sm[MAXN],smj[MAXN],snm[MAXN],snmj[MAXN];
#include<cctype>
int read(){int ret=0;char ch=getchar();bool f=1;for(;!isdigit(ch);ch=getchar()) f^=!(ch^'-');for(; isdigit(ch);ch=getchar()) ret=(ret<<1)+(ret<<3)+ch-48;return f?ret:-ret;
}
void Solve(int L,int R){if(L==R){Ans=(Ans+a[L]*a[L]%MOD)%MOD;return;}int mid=(R+L)>>1;Solve(L,mid),Solve(mid+1,R);sn[mid]=snj[mid]=sm[mid]=smj[mid]=snm[mid]=snmj[mid]=0;long long MAX=0,MIN=1<<30;for(int i=mid+1;i<=R;i++){MAX=max(MAX,a[i]),MIN=min(MIN,a[i]);sn[i]=(sn[i-1]+MIN)%MOD;sm[i]=(sm[i-1]+MAX)%MOD;snj[i]=(snj[i-1]+MIN*i%MOD)%MOD;smj[i]=(smj[i-1]+MAX*i%MOD)%MOD;snm[i]=(snm[i-1]+MIN*MAX%MOD)%MOD;snmj[i]=(snmj[i-1]+MIN*MAX%MOD*i%MOD)%MOD;}MAX=0,MIN=1<<30;for(int i=mid,j=mid,k=mid;i>=L;i--){MAX=max(MAX,a[i]),MIN=min(MIN,a[i]);while(j<R&&a[j+1]<=MAX) j++;while(k<R&&a[k+1]>=MIN) k++;int x=min(j,k),y=max(j,k);Ans=(Ans+MAX*MIN%MOD*(1ll*(mid-i+x-i+3)*(x-mid)/2%MOD))%MOD;Ans=(Ans+(snmj[R]-snmj[y]-(snm[R]-snm[y])*(i-1)%MOD)%MOD+MOD)%MOD;if(k<j) Ans=(Ans+MAX*(snj[y]-snj[x]-(sn[y]-sn[x])*(i-1)%MOD)%MOD+MOD)%MOD;else Ans=(Ans+MIN*(smj[y]-smj[x]-(sm[y]-sm[x])*(i-1)%MOD)%MOD+MOD)%MOD;}
}
int main(){n=read();for(int i=1;i<=n;i++) a[i]=read();Solve(1,n);printf("%lld\n",Ans);return 0;
}

BZOJ3745: [Coci2015]Norma【CDQ】相关推荐

  1. 【BZOJ3745】Norma(CDQ分治)

    [BZOJ3745]Norma(CDQ分治) 题面 BZOJ 洛谷 题解 这种问题直接做不好做,显然需要一定的优化.考虑\(CDQ\)分治. 现在唯一需要考虑的就是跨越当前中间节点的所有区间如何计算答 ...

  2. 【BZOJ3963】[WF2011]MachineWorks cdq分治+斜率优化

    [BZOJ3963][WF2011]MachineWorks Description 你是任意性复杂机器公司(Arbitrarily Complex Machines, ACM)的经理,公司使用更加先 ...

  3. 【教程】简易CDQ分治教程学习笔记

    前言 辣鸡蒟蒻__stdcall终于会CDQ分治啦!       CDQ分治是我们处理各类问题的重要武器.它的优势在于可以顶替复杂的高级数据结构,而且常数比较小:缺点在于必须离线操作. CDQ分治的基 ...

  4. 【BZOJ1492】[NOI2007]货币兑换Cash 斜率优化+cdq分治

    [BZOJ10492][NOI2007]货币兑换Cash Description 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和 B纪念券(以下简称B券).每 ...

  5. 【Luogu1393】动态逆序对(CDQ分治)

    [Luogu1393]动态逆序对(CDQ分治) 题面 题目描述 对于给定的一段正整数序列,我们定义它的逆序对的个数为序列中ai>aj且i < j的有序对(i,j)的个数.你需要计算出一个序 ...

  6. 【CF603E】Pastoral Oddities cdq分治+并查集

    [CF603E]Pastoral Oddities 题意:有n个点,依次加入m条边权为$l_i$的无向边,每次加入后询问:当前图是否存在一个生成子图,满足所有点的度数都是奇数.如果有,输出这个生成子图 ...

  7. 【BZOJ2989】数列(CDQ分治,扫描线)

    [BZOJ2989]数列(CDQ分治) 题面 BZOJ 权.....权限题.. 题解 Description 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和 ...

  8. 【BZOJ3456】【CDQ分治+FNT】城市规划

    试题来源 2013中国国家集训队第二次作业 问题描述 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得 ...

  9. 【CDQ分治+FFT】LGP4566 [CTSC2018]青蕈领主

    [题目] 原题地址 有一个长度为 n n n的排列 a a a,给定 l i l_i li​,表示 a i − l i + 1 - a i a_{i-l_i+1} \dots a_i ai−li​+1 ...

最新文章

  1. android 设置单边框,详解Android用Shape制作单边框图的两种思路和坑
  2. 汇编:以字符形式给出数据
  3. eclipse里source的快捷方法_Eclipse开发必备快捷键
  4. String Split 和 Join
  5. 20170204-py
  6. 使用预编译头提高编译速度
  7. 简单聊下5G与V2X
  8. pytorch线性回归代码_[PyTorch 学习笔记] 1.3 张量操作与线性回归
  9. scratch少儿编程第一季——07、人要衣装佛靠金装——外观模块
  10. Qt如何调用VS编写的动态链接库(dll文件)
  11. Silverlight C# 游戏开发:Flyer10完成寻找工作
  12. 数据恢复软件分享(第二篇)
  13. 微星MSI电脑(GL63 8RE-416CN)打开BIOS隐藏的高级设置方法
  14. C++项目经验(6)——yaml-cpp的安装、报错解决及使用
  15. 编程珠玑 啊哈 算法
  16. Aspose PDF预览出现乱码
  17. np.take()函数用法 python numpy
  18. OpenAVNU 带宽预留协议SRP代码分析
  19. 投影坐标系、大地坐标系(地理坐标系)
  20. 点滴:均线交易策略代码的参考

热门文章

  1. 利用派生类实现统一接口解决三种基础排序问题
  2. java之自定义注解的完整使用
  3. Windows服务器更改远程端口3389
  4. Git的原理详解与使用-臧雪园-专题视频课程
  5. java ffmpeg 直播_ffmpeg转码为直播
  6. 哪些seo搜索技巧你不会用?
  7. MIUI10设置Android通知,Miui10状态栏美化修改工具
  8. 好东西为什么卖不动,店铺选址开店必读!
  9. SK6805MICRO-2427RGB灯珠 2427RGB内置IC灯珠 适用显示领域、智能应用、蓝牙WiFi装饰
  10. python QQ邮件发送