hdu2492 Ping pong
2024-10-20 01:45:59
题意:一群乒乓爱好者居住在一条直线上,如果两个人想打比赛需要一个裁判,裁判的 位置 必须在两者之间 ,裁判的能力也必须不大于 参赛者最大的,不小于参赛者最小的
白皮的题解:考虑 第 i 个 为裁判 的情况 如果 左边 比 a[i] 小的 人数 为 c[i],则 有 i-c[i]-1 个人 比 a[i] 大,同样 右边 比 a[i] 小 的人数为 d[i] ,则比a[i]大的人为 n - i - d[i];
则方案 为 d[i]*( i - c[i] - 1 ) + c[i] * (n - i - d[i])
用 x[ a[i] ] 表示 比 a[i] 小的个数,这就涉及到了 树状数组
代码……
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <string>
using namespace std;
typedef long long ll;
const double ESP = 10e-;
const int MOD = ;
typedef long long LL;
const int MAXN = + ;
const int MAXA = + ;
int bit[MAXA];
int c[MAXN];
int d[MAXN];
int arr[MAXN]; int sum(int i){
int s = ;
while(i > ){
s += bit[i];
i -= i&-i;
}
return s;
} void add(int i,int x){
while(i < MAXA){
bit[i] += x;
i += i&-i;
}
}
int main(){
// freopen("input.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
memset(bit,,sizeof(bit));
memset(c,,sizeof(c));
memset(d,,sizeof(d));
for(int i = ;i <= n;i++){
scanf("%d",&arr[i]);
c[i] = sum(arr[i]);
add(arr[i],);
}
memset(bit,,sizeof(bit));
for(int i = n;i > ;i--){
d[i] = sum(arr[i]-);
add(arr[i],);
}
LL ans = ;
for(int i = ;i <= n;i++){
ans += c[i]*(n-i-d[i]) + d[i]*(i-c[i]-);
}
printf("%I64d\n",ans);
}
return ;
}
最新文章
- JQuery Datatables Columns API 参数详细说明
- NBUT 1673 迷宫问题(DP)
- 怎么查找执行比较慢的sql语句-DBA给的建议
- PE查看器
- 给postfix设置黑名单
- QQ高仿版
- linux命令行下svn常用命令
- 高通spi 屏幕 -lk代码分析
- javascript入门篇(六、正则表达式)
- [转帖]Windows Server 2016各种版本介绍
- 1. Nagios和 NagiosQL安装及配置
- codeforces433B
- 4.mycat部署
- [视频]K8飞刀 WordPress XSS添加管理员 &; GetShell 教程
- ASP.NET MVC使用RenderSection渲染节点
- Ubuntu环境如何上传项目到GitHub网站?
- bluez蓝牙测试工具
- 解题:POI 2015 PUS
- 有关VS中单元测试的一些问题
- TestNG Hello World入门示例
热门文章
- 设置textarea文本域不能调整大小 resize
- 在 Windows Azure 网站 (WAWS) 上对 Orchard CMS 使用 Azure 缓存
- IT第九天 - 包、访问修饰符、变量的内存分配、String类中常用方法
- Matrix Factorization, Algorithms, Applications, and Avaliable packages
- window下如何搭建linux环境
- ThinkPHP - 扩展个人类库 - 以验证码类为例子
- [Swust OJ 746]--点在线上(线段树解法及巧解)
- android 判断网络连接的工具类
- AFNetWorking 提交 NSArray 类型参数 取不到值的解决办法
- 我的Python成长之路---第三天---Python基础(12)---2016年1月16日(雾霾)