3378: [Usaco2004 Open]MooFest 狂欢节

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 88  Solved: 57
[Submit][Status][Discuss]

Description

    每一年,约翰的N(1≤N≤20000)只奶牛参加奶牛狂欢节.这是一个全世界奶牛都参加的大联欢.狂欢节包括很多有趣的活动,比如干草堆叠大赛、跳牛栏大赛,奶牛之间有时还相互扎屁股取乐.当然,她们会排成一列嚎叫,来欢庆她们的节日.奶牛们的叫声实在刺耳,以致于每只奶牛的听力都受到不同程序的损伤.现在告诉你奶牛i的听力为vi(l≤Vi≤20000),这表示如果奶牛j想说点什么让她听到,必须用高于vi×dis(i,j)的音量.而且,如果奶牛i和j想相互交谈,她们的音量必须不小于max(Vi,Vj)×dis(i,j).其中dis(i,J)表示她们间的距离.
    现在N只奶牛都站在一条直线上了,每只奶牛还有一个坐标xi(l≤xi≤20000).如果每对奶牛都在交谈,并且使用最小音量,那所有n(n-1)/2对奶牛间谈话的音量之和为多少?

Input

    第1行输入N,之后N行输入Vi和xi.

Output

    输出音量之和.

Sample Input

4
3 1
2 5
2 6
4 3

Sample Output

57

对于牛的听力v[]从大到小排序,然后一个一个算贡献,算完之后就把这个牛剔除

然后对于第i头牛,s1[i]表示在第i头牛前面还有多少头牛,s2[i]表示这些牛的坐标之和

那么在第i头牛前面所有牛对答案的贡献就是s2[i]-s1[i]*v[i]

在第i头牛后面所有牛的答案的贡献算法同理,这个过程可以用树状数组维护

#include<stdio.h>
#include<algorithm>
using namespace std;
#define LL long long
typedef struct Res
{int x, y;bool operator < (const Res &b) const{if(y>b.y)return 1;return 0;}
}Res;
Res s[20005];
LL tre[20005];
int m, t2[20005];
LL Query(int x)
{LL ans = 0;while(x){ans += tre[x];x -= x&-x;}return ans;
}
int Query2(int x)
{int ans = 0;while(x){ans += t2[x];x -= x&-x;}return ans;
}
void Update2(int x, int p)
{while(x<=m){t2[x] += p;x += x&-x;}
}
void Update(int x, int p)
{while(x<=m){tre[x] += p;x += x&-x;}
}
int main(void)
{LL ans;int n, i;m = 20000;scanf("%d", &n);for(i=1;i<=n;i++)scanf("%d%d", &s[i].y, &s[i].x);sort(s+1, s+n+1);ans = 0;for(i=1;i<=n;i++){Update(s[i].x, s[i].x);Update2(s[i].x, 1);}for(i=1;i<=n;i++){Update(s[i].x, -s[i].x);Update2(s[i].x, -1);ans += (Query(m)-Query(s[i].x)-(LL)(Query2(m)-Query2(s[i].x))*s[i].x)*s[i].y;}for(i=1;i<=n;i++){Update(s[i].x, m-s[i].x+1);Update2(s[i].x, 1);}for(i=1;i<=n;i++){Update(s[i].x, s[i].x-m-1);Update2(s[i].x, -1);ans += (Query(s[i].x)-(LL)Query2(s[i].x)*(m-s[i].x+1))*s[i].y;}printf("%lld\n", ans);return 0;
}

bzoj 3378: [Usaco2004 Open]MooFest 狂欢节(BIT)相关推荐

  1. 3378: [Usaco2004 Open]MooFest 狂欢节

    题目链接 题目大意:n只奶牛,第i只听力为vi,坐标为xi,两只奶牛聊天时音量是max(vi,vj)∗abs(xi−xj).求n(n−1)/2对奶牛的音量和 题目大意:n只奶牛,第i只听力为v_i,坐 ...

  2. bzoj 3357 [Usaco2004]等差数列 dp

    [Usaco2004]等差数列 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 486  Solved: 227 [Submit][Status][D ...

  3. BZOJ 3357: [Usaco2004]等差数列( dp )

    dp(x, p) 表示序列中第x个数, 上一个数是p构成的等差数列的最长. 转移时从[1, x)中枚举p = seq[] 就行了.时间复杂度O(n²logn) -------------------- ...

  4. bzoj 3355: [Usaco2004 Jan]有序奶牛(拓扑排序+bitset)

    3355: [Usaco2004 Jan]有序奶牛 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 56  Solved: 29 [Submit][S ...

  5. bzoj 3356: [Usaco2004 Jan]禁闭围栏(扫描线+树状数组)

    3356: [Usaco2004 Jan]禁闭围栏 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 45  Solved: 26 [Submit][S ...

  6. bzoj 3357: [Usaco2004]等差数列(DP+map)

    3357: [Usaco2004]等差数列 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 485  Solved: 226 [Submit][Sta ...

  7. bzoj 3359: [Usaco2004 Jan]矩形(DP)

    3359: [Usaco2004 Jan]矩形 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 74  Solved: 37 [Submit][Sta ...

  8. bzoj 3360: [Usaco2004 Jan]算二十四(暴力+表达式求值)

    3360: [Usaco2004 Jan]算二十四 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 59  Solved: 48 [Submit][S ...

  9. bzoj 3361: [Usaco2004 Jan]培根距离

    3361: [Usaco2004 Jan]培根距离 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 88  Solved: 70 [Submit][S ...

最新文章

  1. Ubuntu中Atom安装与使用
  2. Erlang vs Java memory architecture (zz)
  3. Spring源码:BeanDefinition
  4. (1)前端工程化—全副武装:通过工程化提升「战斗力」
  5. Linux如何进行GPIO读写操作的?
  6. 【BZOJ2584】memory,扫描线+拓扑图+骗
  7. 第四:Python发送邮件时实现生成测试报告/邮件自动发送
  8. 挑战IPOD功能最强MP3——Zune二代评测
  9. NC158 有向无环图的单源最短路径问题:Dijkstra算法
  10. 【智能无线小车系列二】车体的组装
  11. 全景图拍摄设备有哪些?全景图拍摄方法
  12. @Autowired实现的原理
  13. word文档通配符换行_Word怎么批量删除分隔符
  14. 关于nifty counters
  15. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
  16. 从安卓巴士到CocoaChina,曾经的顶级流量王者,如今的落寞与淡去
  17. 淘宝/天猫API,获得淘宝商品评论返回值说明(数据解析)
  18. mysql 围栏_使用纬度,经度和半径在PHP和MySQL中进行地理围栏
  19. 考研英语作文万能句子模板50个
  20. python Process finished with exit code -1073741571 (0xC00000FD)

热门文章

  1. python最适合做什么-python适合做什么开发_python未来发展怎么样
  2. python编程入门书籍-关于 Python 的经典入门书籍有哪些?
  3. 【语音识别基础】总有一天你会用到,嗯,没有公式~
  4. 音乐语音识别,one speech recognition,音标,读音,翻译,英文例句,英语词典
  5. 10.java之父被B站学习者下载达7000万次的Java视频教程你还没有看过知乎
  6. play ---------idea
  7. php抽奖设置数量,php实现自定义中奖项数和概率的抽奖函数示例
  8. 蓝桥杯2019真题-完全二叉树的权值
  9. 使用 JNA 模拟C语言结构体的完整源代码
  10. datatable相同列合并_使用Power Query合并查询