博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[UVALive 4329] Ping pong
阅读量:4334 次
发布时间:2019-06-07

本文共 1360 字,大约阅读时间需要 4 分钟。

图片加载可能有点慢,请跳过题面先看题解,谢谢

1196604-20171017215618974-1951095291.png
1196604-20171017215623193-1270826302.png

考虑以 \(i\) 为裁判,假设在 \([1,i-1]\) 中,有 \(l[i]\) 个人的技能值比 \(i\) 低;在 \([i+1,n]\) 中,有 \(r[i]\) 个人技能值比 \(i\)

那么 \(i\) 能贡献的答案数为 \(ans[i]=l[i]*(n-i-r[i])+r[i]*(i-1-l[i])\)
所以答案为 \(\sum_{i=1}^{n}ans[i]\)
至于 \(l[i]\)\(r[i]\),用树状数组维护一下就好了

//made by Hero_of_Someone#include
#include
#include
#include
#define ll long long#define il inline#define RG registerusing namespace std;il int gi(){ RG int x=0,q=1; RG char ch=getchar(); while( ( ch<'0' || ch>'9' ) && ch!='-' ) ch=getchar(); if( ch=='-' ) q=-1,ch=getchar(); while(ch>='0' && ch<='9') x=x*10+ch-48,ch=getchar(); return q*x; }int T,n,a[20010],c[100010];int l[20010],r[20010],Max;il int lowbit(int x){return x&-x;}il void init(){ n=gi(),Max=0; memset(c,0,sizeof(c)); for(int i=1;i<=n;i++) a[i]=gi(),Max=max(Max,a[i]);}il int sum(int x){ RG int ret=0; while(x>0){ ret+=c[x]; x-=lowbit(x); } return ret;}il void add(int x){ while(x<=Max){ c[x]++; x+=lowbit(x); } }il void work(){ RG ll ans=0; for(int i=1;i<=n;i++) l[i]=sum(a[i]),add(a[i]); memset(c,0,sizeof(c)); for(int i=n;i;i--){ r[i]=sum(a[i]),add(a[i]); ans+=l[i]*(n-i-r[i])+r[i]*(i-1-l[i]); } printf("%lld\n",ans);}int main(){ T=gi(); while(T--){ init(); work(); } return 0; }

转载于:https://www.cnblogs.com/Hero-of-someone/p/7684198.html

你可能感兴趣的文章
5-14 进程池
查看>>
154 Find Minimum in Rotated Sorted Array 2
查看>>
20135331 文艺 java实验
查看>>
泛型(Generic)-反射泛形-Dao
查看>>
python学习 01 变量
查看>>
Netty实践
查看>>
WebSocket学习与使用
查看>>
velocity properties
查看>>
愿闻其翔记(一)
查看>>
Windows Phone – Audio recorder
查看>>
[ASP.NET] Session的了解
查看>>
Android书籍推荐
查看>>
笔记68 Redis数据库
查看>>
java判断一个类是否公共类
查看>>
LeetCode_Letter Combinations of a Phone Number
查看>>
四、jquery中的事件与应用
查看>>
Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件
查看>>
Javaweb权限管理设计思路
查看>>
测试实例
查看>>
mysql中文乱码的一点理解
查看>>