為什麼全世界都說這是個實體題,不應該是一個數學題嗎,神犇的勢能完全看不懂
我們直接來看題,對于一個點,在計算時候橫坐标和縱坐标互不影響,是以我們分開考慮。
我們記兩個點假如橫坐标相同,分别記縱坐标為a,b
于是,收益就是$b-a-1$
然後用 當年寫大視野鬼畜的思想 來化一下式子,我們可以得到
$$b-a-1=(2*b-2*a-2)/2$$
$$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=[a^2+b^2-(b-1)^2-(a+1)^2]/2$$
由于分開算非常不友善,我們取的又是最大值,是以,直接合起來計算
然後代碼就是非常簡單的了
勢能是什麼,能量守恒是什麼
代碼如下:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
#define ll long long
#define re register
#define gc getchar()
inline int read()
{
re int x(0);re char ch(gc);
while(ch<'0'||ch>'9') ch=gc;
while(ch>='0'&&ch<='9') x=(x*10)+(ch^48),ch=gc;
return x;
}
ll ans;
int n,m;
int main()
{
freopen("casket.in","r",stdin);
freopen("casket.out","w",stdout);
n=read(); m=read();
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
ans+=(1LL*i*i+1ll*j*j)*read();
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
ans-=(1LL*i*i+1LL*j*j)*read();
cout<<(ans/2)<<endl;
return 0;
}
是以那些神仙題解的思路都是,先設出勢能為$a(i,j)=i^2+j^2$ (怎麼想的)
然後由于是末态減初态聯想勢能分析+能量守恒,然後就沒了(黑人問号臉)
轉載于:https://www.cnblogs.com/zijinjun/p/10648528.html