MooFest

MooFest

https://ac.nowcoder.com/acm/problem/106587

其实,我英语水平垃圾的很。。。
题目大意:
给你坐标和每个坐标的权值,题目求n个坐标两两之间的“声音权值”的和,其中任意两个点之间的“声音权值” = 距离*max(两点的权值)。
1.暴力求解法:容易想,也容易TLE
2.树状数组:
我们在处理的过程中,按照权值大小升序排序,可以省略掉取max的步骤。
对于排序之后的第i个元素,设坐标为,权值为,那么对于任意的,都有,在处理第i个元素的时候,权值都是取的。其中,权值小于的点有个,设他们在集合中。
但是这样之后,坐标x是无序的,设中坐标小于的点有个,坐标的和是;
大于的就有个,(中间要去掉一个本身),坐标的和是
然后求距离,坐标小于的点的距离和是,坐标大于的点的距离和是,权值和就是
这个过程其实是可以转化为区间和的,例如,求中坐标小于的坐标和,其实就是以坐标为树状数组的下标,求的区间和。其他详细看代码。
code:

//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;

const int N = 20000+5;
//const ll inf=0x3f3f3f3f3f3f3f3f;
const int inf=0x3f3f3f3f;
const int mod =  199999;
const double eps=1e-7;
//const int tmp=31;

int sn[N],sx[N];//坐标和,坐标数量
struct node
{
    int v,x;
    bool operator<(const node& b)const{
        return v<b.v;
    }
}a[N];
int lowebit(int x){
  return x&(-x);
}
void add(int i,int v){

   while(i<=20000){
      sx[i]+=v;
      sn[i]++;
      i+=lowebit(i);
   }
}
ll ask(int i,int op){//op是0的时候计算坐标和,1的时候计算坐标数量

  ll s=0;
  while(i>0){
    if(!op) s+=sx[i];
    else s+=sn[i];
    i-=lowebit(i);
  }
  return s;
}
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&a[i].v,&a[i].x);
    sort(a+1,a+n+1);
    ll s=0;
    for(int i=1;i<=n;i++){
        ll cor=ask(a[i].x,0);
        ll cor2 = ask(20000,0);//x的最大值是20000,所以用它当作区间的右端点,
                               //最后减去小于a[i].x的坐标和,剩下的才是真正大于a[i].x的坐标和,之后再求距离。
        ll num=ask(a[i].x,1);
        s += a[i].v*(num*a[i].x-cor)+a[i].v*(cor2-cor-(i-num-1)*a[i].x);
        add(a[i].x,a[i].x);
    }
    printf("%lld\n",s);
    return 0;
}

poj不支持万能头文件!!!

全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3423次浏览 43人参与
# HR最不可信的一句话是__ #
1038次浏览 32人参与
# 米连集团26产品管培生项目 #
7180次浏览 224人参与
# 春招至今,你的战绩如何? #
15286次浏览 141人参与
# AI面会问哪些问题? #
911次浏览 22人参与
# 你的实习产出是真实的还是包装的? #
2862次浏览 52人参与
# MiniMax求职进展汇总 #
25003次浏览 321人参与
# 沪漂/北漂你觉得哪个更苦? #
1361次浏览 40人参与
# 你做过最难的笔试是哪家公司 #
1161次浏览 20人参与
# AI时代,哪个岗位还有“活路” #
2736次浏览 50人参与
# XX请雇我工作 #
51149次浏览 171人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7982次浏览 43人参与
# 简历第一个项目做什么 #
32100次浏览 359人参与
# 简历中的项目经历要怎么写? #
310955次浏览 4260人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152854次浏览 889人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187566次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64582次浏览 867人参与
# 如果重来一次你还会读研吗 #
229990次浏览 2011人参与
# 投格力的你,拿到offer了吗? #
178284次浏览 891人参与
# 你怎么看待AI面试 #
180699次浏览 1298人参与
# 正在春招的你,也参与了去年秋招吗? #
364256次浏览 2641人参与
# 腾讯音乐求职进展汇总 #
160831次浏览 1114人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务