首页 > 其他分享 >P3964 [TJOI2013] 松鼠聚会

P3964 [TJOI2013] 松鼠聚会

时间:2024-07-28 14:06:46浏览次数:6  
标签:P3964 shu val heng ll TJOI2013 sum 松鼠 id

原题链接

题解

对于 \((a_1,b_1),(a_2,b_2)\) 的切比雪夫距离,可以看做成 \((\frac{a_1+b_1}{2},\frac{a_1-b_1}{2}),(\frac{a_2+b_2}{2},\frac{a_2-b_2}{2})\) 的曼哈顿距离

不信你分类讨论看看

某一点到其他点的曼哈顿距离,等于所有小于该点和大于该点的x,y的坐标差之和

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll inf=1e18;

struct node
{
    ll val,id;
};

bool cmp(node a,node b)
{
    return a.val<b.val;
}

void solve()
{
    ll n;
    cin>>n;

    vector<node> heng,shu;
    vector<ll> ans(n+1,0);
    for(ll i=1;i<=n;i++)
    {
        ll x,y;
        cin>>x>>y;

        heng.push_back({x+y,i});
        shu.push_back({x-y,i});
    }

    sort(heng.begin(),heng.end(),cmp);
    sort(shu.begin(),shu.end(),cmp);

    ll sum=0;

    for(ll i=0;i<n;i++)
    {
        ll val=heng[i].val,id=heng[i].id;

        ans[id]+=i*val-sum;
        sum+=val;
    }

    sum=0;
    for(ll i=n-1;i>=0;i--)
    {
        ll val=heng[i].val,id=heng[i].id;

        ans[id]+=sum-(n-i-1)*val;
        sum+=val;
    }

    sum=0;
    for(ll i=0;i<n;i++)
    {
        ll val=shu[i].val,id=shu[i].id;

        ans[id]+=i*val-sum;
        sum+=val;
    }

    sum=0;
    for(ll i=n-1;i>=0;i--)
    {
        ll val=shu[i].val,id=shu[i].id;

        ans[id]+=sum-(n-i-1)*val;
        sum+=val;
    }

    ll res=inf;

    for(ll i=1;i<=n;i++)
    {
        res=min(res,ans[i]);
    }
    cout<<res/2<<'\n';
}
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

标签:P3964,shu,val,heng,ll,TJOI2013,sum,松鼠,id
From: https://www.cnblogs.com/pure4knowledge/p/18328183

相关文章

  • 洛谷 U285997 松鼠没有家
    https://www.luogu.com.cn/problem/U285997#submit题目描述星斗大森林里有一棵参天巨树,树上有 nn 个结点,我们给它们编号 11~nn。松鼠每天从树的这头窜到那头,因为它不认真写信息学作业只想划树叶子(树上没办法划水啊),被妈妈给批评了,于是回不了家。现在松鼠想要知道,它从......
  • 树上点差分的经典应用 LuoguP3258松鼠的新家
    树上点差分的核心就是如何避免重复,即正确的运用差分数组例如a,b点路径上点权值加1,则把a,b路径找到,并找到其LCA,此时可以把a到根,b到根这两条路径看出两条链,把每条链看出我们熟悉的顺序差分结构.以其中一条链为例子,把a当成数组的起点,根当成数组的末尾,进行差分,显然有C[a]+......
  • P3258 [JLOI2014] 松鼠的新家
    原题链接题解1.小模拟+树上差分+lcacode#include<bits/stdc++.h>usingnamespacestd;inta[300006]={0};vector<int>G[300005];intdepth[500005]={0};intfa[500005][30]={0};inttree[500005]={0};voiddfs(intnow,intpre){fa[now][0]=pre;depth[n......
  • 三只松鼠坚持的“高端性价比”,也是零食行业通往未来的门票?
    文|螳螂观察作者|易不二没有成功的企业,只有时代的企业。从全球商业数百年的发展历史来看,一百年间有无数企业演绎了“诞生→发展→巅峰→衰亡”的宿命。即便此间已经走到了世界500强的企业,到现在存活下来的也仅有3%。时代的潮流总是在变,很难有能始终屹立在浪潮之巅的企业。但那......
  • P4309 [TJOI2013] 最长上升子序列题解
    P4309[TJOI2013]最长上升子序列题解正文单调队列?单调锤子队列!!本题的操作可以省略成:单点修改区间查询好极了,此时我们有两种选择:线段树和树状数组,(平衡树,真不会,下一位因为不需要其他操作,所以我们还是选择更小巧更可爱的树状数组吧。关于vectorvector的insert操作支......
  • [TJOI2013] 松鼠聚会 题解
    [TJOI2013]松鼠聚会题解切比雪夫距离切比雪夫距离指的是在平面上的两个点\((x_1,y_1)\),\((x_2,y_2)\)之间横纵坐标之差绝对值中的大者。用公式表示则是\(f(a,b)=max(|x_a-x_b|,|y_a-y_b|)\)。切比雪夫距离与曼哈顿距离之间可以相互转换切比雪夫—>曼哈顿:\((x_1,y_1)\),\((x......
  • 「JLOI2014」松鼠的新家 题解
    「JLOI2014」松鼠的新家前言这道题倒也不是很难,只是有一些小坑需要避一下,可以看作半个LCA树上差分裸题。解析考虑维护一个树,点\(u\)表示每个房间需要的糖果数\(s_u\),而维尼在参观房间时从\(a\)到\(b\)就需要在\((a,\tob)\)的路径上的每个房间都摆上一个糖果,这时直......
  • 松鼠智能AI:为您量身定制的chatgpt智能聊天机器人
    在当今的智能化时代,人工智能技术在各个领域都有着广泛的应用,其中聊天机器人更是得到了大家的热烈欢迎。然而,许多人在与AI聊天时却经常出现一种状况:聊天机器人明明有着强大的智能,却不能真正理解用户的需求,无法解答专业问题,经常给人一种“对牛弹琴”的感觉。为了解决这一问题,你可以尝......
  • NC20139 [JLOI2014]松鼠的新家
    题目链接题目题目描述松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的。天哪,他居然真的住在“树”上。松鼠想邀请维尼小熊前来参观,并且还指定一份参观指南,他希望维尼能够按照他的指南顺序,先去a......
  • 智能优化算法:松鼠优化算法 - 附代码
    智能优化算法:松鼠优化算法文章目录智能优化算法:松鼠优化算法1.算法原理1.1种群初始化1.2适应度值评价1.3生成新位置1.4滑翔的空气动力学1.5季节变化条件2.实验结果3.参考文献4.Matlab代码摘要:松鼠优化算法是于2018年提出的一种简单高效的新型优化算法,具有收敛快寻优强的特......