日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JZOJ 5453. 【NOIP2017提高A组冲刺11.5】好路线

發布時間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 5453. 【NOIP2017提高A组冲刺11.5】好路线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

nodgd在旅游。現在,nodgd要從城市的西北角走到東南角去。這個城市的道路并不平坦,nodgd希望找出一條相對比較好走的路。
nodgd事先已經得到了這個城市的地圖。地圖上這個城市是一個n*m的矩形,nodgd現在站在坐標為(1,1)的位置,需要到達坐標為(n,m)的位置。這張地圖上用非負整數標記了每個整數坐標點的海拔,坐標為(x,y)的位置的海拔是?(x,y)。nodgd希望找出一條路線,路線中任意時刻都在向正東或向正南走,而且只在整數坐標點的地方轉彎,使得路上經過的n+m?1個整數坐標點的海拔的方差最小。然而萬能的nodgd當然知道該怎么走,也當然知道方差最小是多少,只是想順便考考你。

在本題中為了方便,你只需要求出(n+m?1)^2×σ^2的最小值即可,眾所周知這是個整數。

Input

第一行輸入兩個整數n,m,表示城市的大小。
接下來n行,每行m個數,其中第x行第y個數就是?(x,y)。

Output

輸出一行一個整數,表示(n+m?1)^2×σ^2的最小值。

Sample Input

2 2
1 2
3 4

Sample Output

14

Data Constraint

對于30%的數據,1≤n,m≤10;
對于50%的數據,1≤n,m≤20;
對于100%的數據,1≤n,m≤50,0≤?(x,y)≤50。

Hint

樣例解釋:有兩條路1-2-4和1-3-4,方差都等于14/9,所以方差最小值是14/9,輸出14。

Solution

  • 首先化簡式子,設

    k=n+m?1 S=X1+X2++Xk

  • 則有:

    x=Sk

σ2=(X1?Sk)2+(X2?Sk)2++(Xk?Sk)2k

  • 化簡:

    σ2=(X2k+X22++X2k)?S2kk

  • 所以就得到式子:

    k2σ2=k(X2k+X22++X2k)?S2

  • 觀察數據范圍,搜索似乎不太可行,于是我們考慮DP。

  • F[i][j][S] 表示走到 (i,j) ,狀態為 S 的最優值。

  • 發現設最優值不好轉移,根據單調性可知可以改成最優值下的平方和,最后統計一遍答案即可。

  • 往下走則有:F[i+1][j][S+a[i+1][j]]=Min{F[i][j][S]+a[i+1][j]2}

  • 往右走同理,由于 h 值的限制,時間復雜度就是 O(N4) ,可以接受。

  • 總結

  • 看到式子就想到化簡;

  • 看到方差就想到 平方和和的平方

  • 平均數 可以用 總和 除以 總數 代替。

Code

#include<cstdio> #include<cstring> #define work(x,y) x=min(x,y) using namespace std; const int N=52,inf=1e9; int n,m,num,mx,ans=inf; int a[N][N],b[N][N],f[N][N][N*N<<1]; inline int read() {int X=0,w=1; char ch=0;while(ch<'0' || ch>'9'){if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w; } inline int max(int x,int y) {return x>y?x:y; } inline int min(int x,int y) {return x<y?x:y; } int main() {n=read(),m=read(),num=n+m-1;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){mx=max(mx,a[i][j]=read());b[i][j]=a[i][j]*a[i][j];}memset(f,60,sizeof(f));f[1][1][a[1][1]]=b[1][1];mx*=num;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=0;k<=mx;k++){if(i<n && k+a[i+1][j]<=mx) work(f[i+1][j][k+a[i+1][j]],f[i][j][k]+b[i+1][j]);if(j<m && k+a[i][j+1]<=mx) work(f[i][j+1][k+a[i][j+1]],f[i][j][k]+b[i][j+1]);}for(int k=0;k<=mx;k++)if(f[n][m][k]<inf) work(ans,num*f[n][m][k]-k*k);printf("%d",ans);return 0; } 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的JZOJ 5453. 【NOIP2017提高A组冲刺11.5】好路线的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。