P1861 星之器 题解

NOIP模拟赛偶遇神人题目,拼尽全力无法战胜

这题真是尽展人类智慧,我就说AI不能取代人类吧

决心狠狠批判这道题

题面就出的让人倍感困难,于是考试的时候我直接使用了高贵的随机数

期望得分:0pts 实际得分:0pts

随机数果然没让我失望

以后再也不用了

考完一看题解,整个人呆住了

???不儿?!!!哥们儿你?!!认真的??!!

这塔姆的什么玩意儿,什么叫势能啊?!

再去搜百度,回来一看,我看了个寂寞啊!!


OK回到正题,这题就是要推公式(结论:数学题,服了)

我们设 f(x,y)(x,y)的势能,总势能就是每个点的势能和,这里的x和y是独立的两个维度

先单独考虑x维操作,接着就能推出来y维

有  f(x1)+f(x2)-f(x1+1)-f(x2-1)=x2-x1-1

移项之后就是 f(x1)-f(x1+1)-x1-1=f(x2-1)-f(x2)-x2 即f(x-1)-f(x)+x为一个定值

不妨将其设为0,容易推出f(x)=\frac{x^2+x}{2}

所以说f(x,y)=\frac{x^2+x+y^2+y}{2}

就可以的得出AC code(bushi):

#include<bits/stdc++.h>
using namespace std;
int n,m,x;
long long ans;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            cin>>x;
            ans+=x*(i*i+i+j*j+j);
        }
    }
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            cin>>x;
            ans-=x*(i*i+i+j*j+j);
        }
    }
    cout<<ans/2;
}

下班!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值