听说这题也是bzoj的3378&&poj1990,然而没有权限号交不了。。poj懒得登。

题意:有n个奶牛,他们相互发出max(a[i].v,a[j].v)*abs(a[i].p-a[j].p)的声音,求这个的和。

绝望,刷这题的时候本来傻逼想%题解的,结果网上的都是树状数组,唯一找到的一个归并排序还TMD是错的。。吃鲸,没办法,只好自己做。

不难发现(如果你%过其他题解),这里v要的是最大值,那我们就用大的将比他小的全部乘起来,那具体在归并排序里面怎么实现呢,我们先按位置从大到小快排,然后大到小归并排序v的大小(这两个排序反过来也行,不过就要自己推公式了),当a[i].v>a[j].v时,说明j~r所有的v,都要比a[i].v小,那就加上a[i].v*sigema(k=j~r)(a[k].p-a[i].p),同理当a[i].v<a[j].v时,a[i].v*sigema(k=i~mid)(a[i].p-a[k].p),a[i].p的个数是确定的,我们只需要预处理一下另外一项就行了。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
struct node
{
int v,p;
}a[],t[];
bool cmp(node n1,node n2)
{
if(n1.p>n2.p)return true;
return false;
}
LL ans;
void mergesort(int l,int r)
{
if(l==r)return ;
int mid=(l+r)/;
mergesort(l,mid);
mergesort(mid+,r); LL suml=,sumr=;
for(int i=l;i<=mid;i++)suml+=a[i].p;
for(int i=mid+;i<=r;i++)sumr+=a[i].p; int i=l,j=mid+,p=l;
while(i<=mid&&j<=r)
{
if(a[i].v>a[j].v)
{
ans+=a[i].v*((r-j+)*a[i].p-sumr);
suml-=a[i].p;
t[p++]=a[i++];
}
else
{
ans+=a[j].v*(suml-(mid-i+)*a[j].p);
sumr-=a[j].p;
t[p++]=a[j++];
}
}
while(i<=mid)t[p++]=a[i++];
while(j<=r)t[p++]=a[j++];
for(int i=l;i<=r;i++)a[i]=t[i];
}
int main()
{
freopen("moofest.in","r",stdin);
freopen("moofest.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d%d",&a[i].v,&a[i].p);
sort(a+,a+n+,cmp); ans=;
mergesort(,n);
printf("%lld\n",ans);
return ;
}

最新文章

  1. sh7.创建yum源脚本练习
  2. gbk和gb2312的区别
  3. linux 查看Java 进程的内存使用情况
  4. [BZOJ1220][POJ1091][HNOI2002]跳蚤
  5. DL,DT,DD,比传统table更语义,解析更快的table列表方式
  6. Android与JNI(一) ---- Java调用C 静态调用
  7. PHP环境搭建(20161014)
  8. 【java 多线程】多线程并发同步问题及解决方法
  9. todolist---插入和删除----vue
  10. 在ABP中使用linq
  11. DotNetCore学习-2.程序启动
  12. teragen/terasort_简化版
  13. 设计模式之Visitor(访问者)(转)
  14. redis使用问题总结
  15. 安装flutter和dart总结
  16. add new row to data.frame/dataframe
  17. MVVM模式的 数据绑定
  18. jquery 清除style样式
  19. JQuery iframe
  20. jsp和servlet的问题收集.... 答案有部分是自己理解的,可能有点差异

热门文章

  1. AI学习笔记(01)
  2. 大数据学习——redis安装
  3. zoj 2857 Image Transformation
  4. Kubernetes集群中修复状态为NotReady的节点
  5. Go循环语句
  6. POJ2455 Secret Milking Machine【二分,最大流】
  7. URAL 1614. National Project “Trams” [ 构造 欧拉回路 ]
  8. php之ThinkPHP的memcached类的修改
  9. jquery serializeArray() 方法通过序列化表单值来创建对象数组(名称和值)。
  10. Atom编辑Markdown文件保存后行尾的空格自动消失的问题解决