bzoj5055 膜法师
来源:互联网 发布:芈月怎么玩 知乎 编辑:程序博客网 时间:2024/04/28 17:56
题目
令人恐惧的一道题233。
时间的力量。。。。
其实我是不想写的,但看在AC人怎么少,而且还没题解,写一发吧。
先枚举每一个数,看它前面有几个比它小,算一下和为sum1,后面有几个比它大,算一下和为sum2,对答案的贡献为A[i]*sum1*sum2。
离散化后,树状数组就可以了。
#include<bits/stdc++.h>#define N 300000using namespace std;int n,A[N+5];int data[N+5],siz;long long tmp,ans;long long c[N+5],Mn[N+5],Mx[N+5];const long long mod=19260817;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline int read(){ int x=0,b=1; char c=nc(); for(;!(c<='9'&&c>='0');c=nc())if(c=='-')b=-1; for(;c<='9'&&c>='0';c=nc())x=x*10+c-'0'; return x*b;}inline void write(int x){ if(x==0)putchar('0'); else { char buf[15]; int len=0; if(x<0)putchar('-'),x=-x; while(x)buf[++len]=x%10+'0',x/=10; for(int i=len;i>=1;i--)putchar(buf[i]); } putchar(' ');}inline int lowbit(int x){ return x&-x;}inline void add(int pos,int val){ for(int i=pos;i<=n;i+=lowbit(i)) c[i]+=val;}inline long long qurry(int pos){ long long sum=0; for(int i=pos;i>=1;i-=lowbit(i)) sum+=c[i]; return sum;}int main(){ freopen("in.txt","r",stdin); n=read(); for(int i=1;i<=n;i++)A[i]=read(); for(int i=1;i<=n;i++)data[i]=A[i]; sort(data+1,data+n+1); siz=unique(data+1,data+n+1)-data-1; for(int i=1;i<=n;i++)A[i]=lower_bound(data+1,data+siz+1,A[i])-data; for(int i=1;i<=n;i++) { Mn[i]=qurry(A[i]-1)%mod; add(A[i],data[A[i]]); } memset(c,0,sizeof(c)); for(int i=n;i>=1;i--) { Mx[i]=(qurry(siz)-qurry(A[i]))%mod; add(A[i],data[A[i]]); } for(int i=1;i<=n;i++) { tmp=Mn[i]*Mx[i]%mod; ans=(ans+tmp*data[A[i]])%mod; } cout<<ans; return 0;}
好慢呀,怕是被__走了(逃
阅读全文
0 0
- bzoj5055: 膜法师
- bzoj5055 膜法师
- 【bzoj5055】膜法师
- [bzoj5055]膜法师 树状数组
- COGS 2487 膜法师
- bzoj 5055: 膜法师
- bzoj 5055: 膜法师
- BZOJ 5055: 膜法师 树状数组
- BZOJ[5055]膜法师 树状数组
- 【bzoj 5055】膜法师(树状数组)
- [ 树状数组 ] BZOJ5055
- 法师的法师的
- 法师的法师的
- 按时打发飒飒发飒飒法师法师法师法师法师
- JZOJ5280. 【NOIP提高组模拟A组8.15】膜法师
- 【jzoj5280】【NOIP提高组模拟A组8.15】【膜法师】
- 膜法师【NOIP提高组模拟A组8.15】
- 【JZOJ5280】【NOIP提高组模拟A组8.15】膜法师
- 线程调度、优先级和关联性(7)
- Java中的运算符
- [高等数学]函数与极限(1)—映射和函数
- 链表 队列 栈的比较
- 使用Java Swing绘制随鼠标拖拽可见轨迹的矩形(不会一直绘制矩形,而是类似ps中的矩形工具)
- bzoj5055 膜法师
- Java如何实现对存储过程的调用
- mybatis资料
- 工程物料管理信息化建设(九)——项目应用中暴露出的细节问题
- LinuxStudyNote(25)-Linux常用命令(4)-文件搜索命令(2)locate文件快速查找
- 乒乓球的热爱
- TCP的拥塞控制
- 刷题训练——字符菱形
- C#类快速应用