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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷 P2893 [USACO08FEB]修路Making the Grade 解题报告

發(fā)布時(shí)間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 P2893 [USACO08FEB]修路Making the Grade 解题报告 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

P2893 [USACO08FEB]修路Making the Grade

題目描述

A straight dirt road connects two fields on FJ's farm, but it changes elevation more than FJ would like. His cows do not mind climbing up or down a single slope, but they are not fond of an alternating succession of hills and valleys. FJ would like to add and remove dirt from the road so that it becomes one monotonic slope (either sloping up or down).

You are given N integers A1, ... , AN (1 ≤ N ≤ 2,000) describing the elevation (0 ≤ Ai ≤ 1,000,000,000) at each of N equally-spaced positions along the road, starting at the first field and ending at the other. FJ would like to adjust these elevations to a new sequence B1, . ... , BN that is either nonincreasing or nondecreasing. Since it costs the same amount of money to add or remove dirt at any position along the road, the total cost of modifying the road is

|A1 - B1| + |A2 - B2| + ... + |AN - BN |Please compute the minimum cost of grading his road so it becomes a continuous slope. FJ happily informs you that signed 32-bit integers can certainly be used to compute the answer. 農(nóng)夫約翰想改造一條路,原來的路的每一段海拔是A_i,修理后是B_i,花費(fèi)|A_i – B_i|。我們要求修好的路是單調(diào)不升或者單調(diào)不降的。求最小花費(fèi)。

輸入輸出格式

輸入格式:

  • Line 1: A single integer: N

  • Lines 2..N+1: Line i+1 contains a single integer elevation: Ai

輸出格式:

  • Line 1: A single integer that is the minimum cost for FJ to grade his dirt road so it becomes nonincreasing or nondecreasing in elevation.

這個(gè)題,從各種意義上講都不難,然而我沒想出來沒想出來。。。

首先一定是要離散化的,因?yàn)椴粫?huì)去修一段沒有出現(xiàn)的高度(可以證明這樣不比最優(yōu)解好)

設(shè)離散化以后的坐標(biāo),\(b[i]\)代表離散化以后排名為\(i\)的數(shù)字的值

\(dp[i][j]\)代表前\(i\)個(gè)組成的合法序列末尾元素的排名為\(j\)的最小花費(fèi)

則有轉(zhuǎn)移(單調(diào)不降)
\(dp[i][j]=min_{k=1}^j(dp[i][k]+abs(a[i]-b[j]))\)

顯然可以前綴和優(yōu)化一下子

復(fù)雜度\(O(N^2)\)


Code:

#include <cstdio> #include <algorithm> #include <cstring> const int N=2e3+10; int dp[N][N],g[N][N],n,a[N],b[N]; int min(int x,int y){return x<y?x:y;} int max(int x,int y){return x>y?x:y;} int abs(int x){return x>0?x:-x;} int main() {scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",a+i),b[i]=a[i];std::sort(b+1,b+1+n);memset(g,0x3f,sizeof(g));memset(g[0],0,sizeof(g[0]));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){dp[i][j]=g[i-1][j]+abs(a[i]-b[j]);g[i][j]=min(g[i][j-1],dp[i][j]);}int ans=g[n][n];memset(g,0x3f,sizeof(g));memset(g[0],0,sizeof(g[0]));for(int i=1;i<=n;i++)for(int j=n;j;j--){dp[i][j]=g[i-1][j]+abs(a[i]-b[j]);g[i][j]=min(g[i][j+1],dp[i][j]);}ans=min(ans,g[n][n]);printf("%d\n",ans);return 0; }

事實(shí)上有一種更加神奇的做法

先說操作(單調(diào)非降的):
從左到右,把當(dāng)前位置的數(shù)放進(jìn)大根堆,然后比較這個(gè)數(shù)和堆頂?shù)拇笮 ?/p>

若比堆頂大,就不管

若比堆頂小,就把堆頂拿出來變成這個(gè)數(shù),然后答案增加堆頂與這個(gè)數(shù)的差

代碼大概是這樣

for(int i=1;i<=n;i++) {scanf("%d",&a);q.push(a);if(a<q.top()){ans+=q.top()-a;q.pop();q.push(a);} }

為什么捏?

假設(shè)塞到第\(i\)了,前面是一個(gè)合法的遞增序列,堆頂為\(y\),當(dāng)前為\(x\)\(x<y\)

這時(shí)候我們花掉了\(y-x\)塊錢進(jìn)行調(diào)整,考慮我們調(diào)整可以得到哪些結(jié)果

二元組\((x,x),(x+1,x+1),..(y-1,y-1),(y,y)\)都是可能的結(jié)果,雖然有的結(jié)果可能不合法,但一定存在合法的結(jié)果

我們盡可能想讓當(dāng)前的數(shù)值小,所以我們盡可能會(huì)選擇小的合法結(jié)果

這時(shí)候我們發(fā)現(xiàn),如果堆頂在后面被更新了,我們的合法結(jié)果的選擇集合就變了

如果我們直接把最小的可能不合法的結(jié)果放進(jìn)堆,那么當(dāng)比它大的元素都被砍掉后(也就是它成了堆頂),它就變得合法了


2018.8.28

轉(zhuǎn)載于:https://www.cnblogs.com/butterflydew/p/9548407.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的洛谷 P2893 [USACO08FEB]修路Making the Grade 解题报告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色大片在线 | av av片在线看| www.夜夜夜 | 日韩av一区二区三区 | 天天干天天插天天射 | 国产精品美乳在线观看 | 激情文学欧美 | 免费在线观看网址入口 | 国产成人欧美一区二区三区91 | 污网站在线观看免费 | 丁香婷婷综合网 | 91网站免费在线观看 | 日韩一区二区三区网站 | 亚洲国产成人无码av在线 | 久久精品夜 | 国产一级一区 | 免费看一级黄色片 | 国产操比视频 | 久久免费视频观看 | 国产精品久久久久影院老司 | 三级a视频 | 国产手机在线视频 | 国产在线视频二区 | 色哟哟中文字幕 | 色在线视频观看 | 相亲对象是问题学生动漫免费观看 | 蜜色影院 | 日韩美女免费线视频 | 男男野外做爰全过程69 | 秘密基地免费观看完整版中文 | av操操| 麻豆视频精品 | 日韩精品久久久久久久酒店 | 精品人妻一区二区色欲产成人 | 一级片手机在线观看 | 国产精品69久久久 | 伊人视频 | 九九99精品视频 | 免费的黄色的网站 | 欧美一区二区 | 成人黄色三级视频 | 久久久久久婷婷 | 被黑人各种姿势猛c哭h文1 | 久久久精品久久久久久 | 国产又粗又黄又爽视频 | 欧美精品第一页 | 亚洲黄色免费看 | 丁香婷婷网 | 99er热精品视频 | 免费av不卡在线观看 | 少妇精品无码一区二区 | 九草视频在线观看 | 婷婷国产视频 | 在线观看精品视频 | 麻豆射区| 久草免费在线 | 高潮一区二区三区 | 99久久国产综合 | 青草视频免费看 | 国产黄色一级网站 | 国产又大又黑又粗免费视频 | 欧美区一区 | 激情福利社 | 天堂中文在线免费观看 | 五月婷婷在线视频 | 免费看操片 | 制服.丝袜.亚洲.中文.综合懂色 | 欧美日韩经典 | 欧美大片高清免费观看 | 黑帮大佬和我的三百六十五天 | 欧美一级片网站 | 欧美片一区二区三区 | 国产wwwwwww| 91干干干| 日韩精品二区在线观看 | 国产字幕侵犯亲女 | 国产淫片| 亚洲视频大全 | 亚洲av日韩av不卡在线观看 | 影音先锋成人资源 | 青青插 | 亚洲日本欧美 | 男女视频在线观看免费 | 亚洲成人国产精品 | 男女做激情爱呻吟口述全过程 | 蜜桃av成人 | 国产麻豆一精品一男同 | 男女涩涩网站 | 一级成人免费 | 爆操巨乳美女 | 欧美日韩在线观看一区二区三区 | 亚洲伦理在线播放 | 黑人操bb| 久久不卡视频 | 在线亚洲+欧美+日本专区 | 亚洲欧美视频一区二区 | 水牛影视av一区二区免费 | 国产人伦精品一区二区三区 | 亚洲中文字幕无码av |