bzoj5055: 膜法师(BIT)
大水题WA了两发T T
记录一下a[i]的前缀和,a[i]*a[j]就是sigma(a[j]*sumi[j-1])
记录一下a[i]*a[j]的前缀和,a[i]*a[j]*a[k]就是sigma(a[k]*sumij[k-1])
因为要求ai<aj<ak,所以前缀和必须用权值树状数组来统计
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define MOD(x) ((x)>=mod?(x)-mod:(x))
using namespace std;
const int maxn=,mod=;
int n,N,ans;
int a[maxn],b[maxn],lisan[maxn],tree[][maxn];
char buf[],*ptr=buf-;
inline int read()
{
char c=*++ptr;int s=,t=;
while(c<||c>)c=*++ptr;
while(c>=&&c<=){s=s*+c-'';c=*++ptr;}
return s*t;
}
inline int lowbit(int x){return x&-x;}
inline void add(int x,int delta,int ty){for(;x<=N;x+=lowbit(x))tree[ty][x]=MOD(tree[ty][x]+delta);}
inline int query(int x,int ty){int sum=;for(;x;x-=lowbit(x))sum=MOD(sum+tree[ty][x]);return sum;}
int main()
{
fread(buf,,sizeof(buf),stdin);n=read();
for(int i=;i<=n;i++)a[i]=read(),a[i]%=mod,b[i]=a[i];N=n;
sort(b+,b++N);N=unique(b+,b++N)-b-;
for(int i=;i<=n;i++)lisan[i]=lower_bound(b+,b++N,a[i])-b;
for(int i=;i<=n;i++)
{
ans=(ans+1ll*a[i]*query(lisan[i]-,))%mod;
int x=1ll*a[i]*query(lisan[i]-,)%mod;
add(lisan[i],a[i],);add(lisan[i],x,);
}
printf("%d\n",ans);
}
bzoj5055: 膜法师(BIT)的更多相关文章
- bzoj5055 膜法师
Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然,他能为长者所续的时间,为这三个维度上能量的乘 ...
- 【BZOJ5055】膜法师 树状数组
[BZOJ5055]膜法师 Description 题目描述 在给定的维度序列a中, 求出所有满足i<j<k且ai<aj<ak的ai*aj*ak的和 即 ∑ (a_i*a_j* ...
- [BZOJ 5055]膜法师
Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然,他能为长者所续的时间,为这三个维度上能量的乘 ...
- BZOJ_5055_膜法师_树状数组+离散化
BZOJ_5055_膜法师_树状数组+离散化 Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然 ...
- bzoj 5055: 膜法师——树状数组
Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然,他能为长者所续的时间,为这三个维度上能量的乘 ...
- bzoj 5055: 膜法师 -- 树状数组
5055: 膜法师 Time Limit: 10 Sec Memory Limit: 128 MB Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇 ...
- JZOJ.5280【NOIP2017模拟8.15】膜法师
Description
- [JZOJ5280]膜法师题解--思维+前缀和
[JZOJ5280]膜法师题解--思维+前缀和 题目链接 暴 力 过 于
- 【bzoj5055】膜法师(离散化+树状数组)
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=5055 这道题……不得不说,从标题到题面都能看出一股浓浓的膜法气息……苟…… 题意就是统计顺序 ...
随机推荐
- 理解学习Springboot(二)
一.关闭banner 如果不想看到任何的banner,可以将其关闭. 当然也可以自己自定义banner,http://patorjk.com/software/taag/#p=display& ...
- RetinaNet 迁移学习到自标数据集
Keras-RetinaNet 在自标数据集 alidq 上训练 detection model RetinaNet 模型部署与环境配置 参考README 数据预处理 数据统计信息: 类别:gun1, ...
- python怎么安装requests、beautifulsoup4等第三方库
零基础学习python最大的难题之一就是安装所有需要的软件,下面来简单介绍一下如何安装用pip安装requests.beautifulsoup4等第三方库: 方法/步骤 点击开始,在运行里 ...
- 在香港网站使用工商银行的MasterCard,工商银行所犯的低级的错误,金融安全何在
- 亮眼的购物季数据,高涨的 Amazon Prime
依照往年的惯例,亚马逊公布了 2013 购物季的销售数据.据 The Verge 的报道,今年,仅仅网购星期一(Cyber Monday)一天就在全球范围内销售出 3680 万件商品,而去年这一数字为 ...
- CentOS-6.x系列查看cpu核数
使用CentOS7.x使用习惯了后用top命令,然后按1就可以查看相关的cpu核心数等相关信息 相关概念: 物理CPU:实际Server中插槽上的CPU个数. 物理cpu数量:可以数不重复的 phys ...
- 查看struts包源码
- Right-BICEP测试四则运算2
根据Right-BICEP单元测试的方法,我对我写的四则运算2的程序进行了测试: 1.测试能否控制使用乘除 有乘除 无乘除 2.测试是否能加括号 不加括号 加括号 3.能否控制结果没有负数 无负数 4 ...
- 机器学习实战第二章----KNN
tile的使用方法 tile(A,n)的功能是把A数组重复n次(可以在列方向,也可以在行方向) argsort()函数 argsort()函数返回的是数组中值从大到小的索引值 dict.get()函数 ...
- playbook详解—YAML格式的文本
在playbook中有一些核心的指令 hosts:指明命令运行在哪个node之上 remote_user:在远端的node之上以什么用户的身份运行命令 var:给模板传递变量值 tasks:指明需要执 ...