[SPOJ22343] Norma】的更多相关文章

Description 现在有一个长度为\(N(N\leq 500000)\)的序列,定义区间\([l,r]\)的价值为\([l,r]\)的最小值乘上\([l,r]\)的最大值乘上\([l,r]\)的长度.问这个序列的所有区间的价值和对\(10^9\)取模的结果. Solution 遇到神仙题考虑分治. 考虑所有经过\(mid\)的区间. 对于小于等于\(mid的\)\(i\),我们要求所有在\(mid\)右边的\(j\)并计算\([i,j]\)的价值. 可以先维护出来\([i,mid]\)的最…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…
[BZOJ3745]Norma(CDQ分治) 题面 BZOJ 洛谷 题解 这种问题直接做不好做,显然需要一定的优化.考虑\(CDQ\)分治. 现在唯一需要考虑的就是跨越当前中间节点的所有区间如何计算答案了. 从\(mid\)开始向左枚举左端点,考虑右端点的贡献.那么我们在右侧记录两个指针\(p,q\),分别表示左侧的最大值和最小值第一次改变的位置.这两个指针会把整个序列分成三段. 第一段最大值和最小值都是左侧最大最小值,直接计算区间长度和就好了. 第二段是最大值和最小值中一个被改变了,分情况讨论…
Norma Time Limit: 20 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description Input 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output 输出答案对10^9取模后的结果. Sample Input 4 2 4 1 4 Sample Output 109 HINT N <= 500000 1 <= a_i <= 10^8 Solution \begin {align} &a…
[BZOJ3745][Coci2015]Norma Description Input 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output 输出答案对10^9取模后的结果. Sample Input 4 2 4 1 4 Sample Output 109 [数据范围] N <= 500000 1 <= a_i <= 10^8 题解:最近做这种题好像有点多啊~(虽然我基本上都没A). 比较直接的想法就是找出区间的最大值mid,然后分治处理[l,mid-1]和[mi…
[题解]Norma [COCI2014] [SP22343] 传送门:\(\text{Norma [COCI2014]}\) \(\text{[SP22343]}\) [题目描述] 给定一个整数 \(n\) 和一个长度为 \(n\) 的序列 \(a\),子序列是指原序列中一段连续的序列.子序列的价值定义为它们中的最小值乘以最大值再乘以该子序列长度 .现要计算所有子序列的价值之和,答案对 \(1e9\) 取模. [样例] 样例输入: 3 1 2 样例输出: 16 样例输入: 4 2 4 1 4 样…
Norma Description Input Format 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output Format 输出答案对10^9取模后的结果. Sample Input 4 2 4 1 4 Sample Output 109 解析 可以考虑分治计算贡献,对于一次分治\((l,r,mid)\),我们只需要计算跨过中点\(mid\)的子区间带来的贡献即可. 我们可以枚举一个左端点\(L\in[l,mid]\),然后尝试计算所有的\(R\in[mid+1,r…
Description Input 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output 输出答案对10^9取模后的结果. 预处理每个位置的数作为最小/大值向左延伸的最大距离,线段树维护序列的前缀的后缀min和后缀max以及这个前缀的后缀对答案的贡献,在前缀末尾加入一个数可以快速维护. #include<cstdio> typedef long long i64; ,P=; ],*ptr=buf-; int _(){ ,c=*++ptr; )c=*++ptr; )x=x…
考虑枚举右端点,用线段树维护[i,nowr]的答案. 当右端点向右延伸时,需要知道它前面第一个比它大/小的数的位置,这里面的最值将发生改变,这个使用单调队列求出,然后将所有的l都加1. 注意常数优化. #include<cstdio> #define PB int mid=(a+b)>>1,l=x<<1,r=l|1;if(T[x].tx)cmax1(l,T[x].tx),cmax1(r,T[x].tx),T[x].tx=0;if(T[x].tn)cmin1(l,T[x]…
日常我们为了让文字内容在一行内显示完,哪怕宽度不够也不能换行,我们可以使用white-space样式,但如果遇到了html br强制换行标签,无论是设置white-space与否都会被<br>强制换行. 昨天仿照娜姐做的标题滚动,自己照着那个js也写了一个,结果发现死活就是不滚动,今天早上发现原来还有一段CSS代码没有看到,这个css代码尤为重要. 其中就是有一个属性: white-space:nowrap; 2.white-space参数:normal : 默认处理方式nowrap : 强制…