bzoj4750
单调栈+前缀和
max很明显用单调栈搞,但是异或和呢?异或和我们拆位,对于每段区间的异或和[l[i]-i],[i,r[i]]答案就是0->1,1->0的乘积,但是统计的时候事实上是[l[i]-2,i-1],因为异或和本身是前缀和,所以要-1,单调栈又是一个前缀和,也要-1,所以就是-2
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + , mod = 1e9 + ;
int n;
int l[N], r[N], st[N];
ll a[N], sum[N][];
void up(ll &x, const ll &t)
{
x = ((x + t) % mod + mod) % mod;
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int top = ;
ll ans = , tot = ;
scanf("%d", &n);
for(int i = ; i <= n; ++i)
{
scanf("%lld", &a[i]);
tot = tot ^ a[i];
for(int j = ; j < ; ++j) sum[i][j] = sum[i - ][j] + ((tot & ( << j)) > );
}
for(int i = ; i <= n; ++i)
{
l[i] = r[i] = i;
while(top && a[i] > a[st[top]])
{
r[st[top - ]] = r[st[top]];
l[i] = l[st[top]];
--top;
}
st[++top] = i;
}
while(top) r[st[top - ]] = r[st[top]], --top;
for(int i = ; i <= n; ++i)
{
ll pw = ;
for(int j = ; j < ; ++j)
{
ll tmp1 = sum[r[i]][j] - sum[i - ][j], tmp2 = sum[i - ][j] - sum[max(l[i] - , )][j];
up(ans, tmp1 * (ll)(i - l[i] + - tmp2) % mod * pw % mod * a[i] % mod);
up(ans, (ll)(r[i] - i + - tmp1) * tmp2 % mod * pw % mod * a[i] % mod);
pw = pw * % mod;
}
}
printf("%lld\n", ans);
}
return ;
}
bzoj4750的更多相关文章
- bzoj4750: 密码安全
Description 有些人在社交网络中使用过许多的密码,我们通过将各种形式的信息转化为 01 信号,再转化为整数,可以将这个 人在一段时间内使用过的密码视为一个长度为 n 的非负整数序列 A_1, ...
- 【bzoj4750】密码安全 单调栈
题目描述 模10^9+61 输入 第一行包含一个正整数 T ,表示有 T 组测试数据. 接下来依次给出每组测试数据.对于每组测试数据: 第一行包含一个正整数 n . 第二行包含 n 个非负整数,表示 ...
随机推荐
- NIO与传统IO的区别(形象比喻)[转]
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大.使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数 ...
- Java 5/Java 6/Java7/Java 8新特性收集
前言: Java 8对应的JDK版本为JDK8,而官网下载回来安装的时候,文件夹上写的是JDK1.8,同一个意思.(而这个版本命名也是有规律的,以此类推) 一.Java 5 1.https://seg ...
- POJ 3518 Prime Gap(素数)
POJ 3518 Prime Gap(素数) id=3518">http://poj.org/problem? id=3518 题意: 给你一个数.假设该数是素数就输出0. 否则输出比 ...
- react 中的无状态函数式组件
无状态函数式组件,顾名思义,无状态,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑. 其实无状态函数式组件也是 ...
- dm8127/8148下怎样进行dsplink的编写
样例:从A8读入1080p的yuv420sp的数据给dsplink,在dsp 中建立一个link(做一些图像处理的工作).然后将yuv420sp的数据发送到videoM3做jpeg编码,然后在传递到A ...
- Machine Learning—Online Learning
印象笔记同步分享:Machine Learning-Online Learning
- html中跳转方法(含设定时间)
脚本方式 如: <script language="JavaScript" type="text/JavaScript"> <!-- wind ...
- poj 3105 Expectation 按位统计
题意: 给n,求sum(i^j)/(n^2),0<=i,j<n.n<10^9 分析: 暴力n^2算法肯定超时.这是logn按位统计算法:按位先算出0出现的个数x,则1出现的个数为n- ...
- Android自己定义圆角ImageView
我们常常看到一些app中能够显示圆角图片.比方qq的联系人图标等等,实现圆角图片一种办法是直接使用圆角图片资源,当然假设没有圆角图片资源.我们也能够自己通过程序实现的,以下介绍一个自己定义圆角Imag ...
- js之substr和substring的差别
今天有人在群里问这两个的差别,借这个机会在这罗列下 substring(from,to) 開始和结束的位置,从零開始的索引 參数 描写叙述 from 必需. 一个非负的整数,规定要提取 ...