山區建小學

題目描述

政府在某山區修建了一條道路,恰好穿越總共nn個村莊的每個村莊一次,沒有回路或交叉,任意兩個村莊只能通過這條路來往。已知任意兩個相鄰的村莊之間的距離為d_idi?(為正整數),其中,0<i<n0<i<n。為了提高山區的文化素質,政府又決定從nn個村中選擇mm個村建小學。請根據給定的nn、mm以及所有相鄰村莊的距離,選擇在哪些村莊建小學,才使得所有村到最近小學的距離總和最小,計算最小值。

輸入輸出格式

輸入格式:

?

第1行為n和m,其間用空格間隔。

第2行為n-1個整數,依次表示從一端到另一端的相鄰村莊的距離,整數之間以空格間隔。

例如

10 3

2 4 6 5 2 4 3 1 3

表示在10個村莊中建3所學校。第1個村莊與第2個村莊距離為2,第2個村莊與第3個村莊距離為4,第3個村莊與第4個村莊距離為6,...,第9個村莊到第10個村莊的距離為3。

?

輸出格式:

?

各村莊到最近學校的距離之和的最小值。

?

輸入輸出樣例

輸入樣例#1:?復制
10 2
3 1 3 1 1 1 1 1 3
輸出樣例#1:?復制
18

說明

0 <?mm?<=?nn?< 500

0 <?d_idi??<=100

#include<bits/stdc++.h>
#define REP(i, a, b) for(int i = (a); i <= (b); ++ i)
#define REP(j, a, b) for(int j = (a); j <= (b); ++ j)
#define PER(i, a, b) for(int i = (a); i >= (b); -- i)
#define REP(k, a, b) for(int k = (a); k <= (b); ++ k)
using namespace std;
const int maxn=505;
template <class T>
inline void rd(T &ret){char c;ret = 0;while ((c = getchar()) < '0' || c > '9');while (c >= '0' && c <= '9'){ret = ret * 10 + (c - '0'), c = getchar();}
}
int n,m,dis[maxn],dp[maxn][maxn],w[maxn][maxn];
int main()
{rd(n),rd(m);REP(i,2,n)rd(dis[i]),dis[i]+=dis[i-1];REP(i,1,n){REP(j,i,n){int mid=i+j>>1;REP(k,i,j){w[i][j]+=abs(dis[mid]-dis[k]);}}}REP(i,0,n){REP(j,0,m){dp[i][j]=0x3f3f3f3f;}}dp[0][0]=0;REP(i,1,n){REP(j,1,m){if(j>i){dp[i][j]=0;continue;}REP(k,j-1,i){dp[i][j]=min(dp[i][j],dp[k][j-1]+w[k+1][i]);}}}cout<<dp[n][m]<<endl;return 0;
}

?

轉載于:https://www.cnblogs.com/czy-power/p/10453771.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449292.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449292.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449292.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

idea debugger console 不見了--還原 console 圖標

1 找了好久&#xff0c;也找不到&#xff0c;調試的時候挺麻煩的。 2 最后發現 有個一個重置&#xff0c;視圖的按鈕。點擊一下就恢復 。 如下圖。轉自&#xff1a;https://blog.csdn.net/changdejie/article/details/64127026

實驗五:任意輸入10個int類型數據,排序輸出,再找出素數

import java.util.Scanner; public class Pxsushu {public static void main(String[] args) {// TODO Auto-generated method stubScanner s new Scanner(System.in);int temp;//對數組事先聲明并創建10個空間int[] a new int[10];//把輸入的數存儲為數組for (int i 0; i &…

Vue筆記(六)——Vue組件通信Vuex

組件通信 vue本身的組件通信 父>子&#xff1a;父組件向子組件傳參或者調用子組件的方法子>父&#xff1a;子組件向父組件傳參或者調用父組件的方法兄弟之間&#xff1a;兄弟組件之間傳參或者調用方法父子通信 傳參 - props思路&#xff1a;定義子組件的屬性&#xff08;…

灼灼夏日 - 遙思故鄉 - 赤子無相忘

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 偶然翻看舊照片&#xff0c; 想起沒有帶過來的一本本詩集、散文集、手抄本、畫冊 ... 想起母親的寄掛 ... 想起父親的沉默 ... 想起少…

錢生錢最好的辦法是什么?

當你養成理財的六種好習慣時&#xff0c;你能錢生錢了。這六種習慣是&#xff1a; 習慣一&#xff1a;記錄財務情況。能夠衡量就必然能夠了解&#xff0c;能夠了解就必然能夠改變。如果沒有持續的、有條理的、準確的記錄&#xff0c;理財計劃是不可能實現的。因此&#xff0c;在…

grid - 隱式命名網格線名稱

1.隱式的指定網格線反向指定了隱式的網格區域名稱&#xff0c;命名的網格區域隱式的命名了網格線名稱. 指定網格區域會給網格區域邊線添加隱式的網格線名稱。這些網格線的命名是基于網格區域來命名&#xff0c;只是在網格區域名稱的后面添加后綴-start或-end. 1 <view class…

前端筆試題小結(一)

前端筆試題小結&#xff08;一&#xff09; 2020-03-13 題目一&#xff1a; 將一個js數組去重。 樣例&#xff1a; 輸入&#xff1a;[ 1, “apple”, 3, “a”, 3, 1, 5, 6, “a”, 4 ] 輸出&#xff1a;[ 1, “apple”, 3, “a”, 5, 6, 4 ] 分析1&#xff1a; 將兩個數組循…

2019-3-1

偽靜態: .html url(^page/(?P<id>\d).html/$,views.page,namepages) /page/1|2|3.html/ | {% url pages 1|2|3 %} 3.request對象 --method,GET,POST --FILES,META,body,path,get_full_path(),is_ajax(),COOKIE,session 4.CBV處理請求的另外一種方式 from django.…

java 使用 new Date() 和 System.currentTimeMillis() 獲取當前 時間戳

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 在開發過程中&#xff0c;通常很多人都習慣使用new Date()來獲取當前時間。 使用起來也比較方便&#xff0c;同時還可以獲取與當前時間…

持幣過節也能讓錢生錢

今天是國慶長假前最后一個交易日。從盤面上看&#xff0c;投資者包括部分基金公司減倉明顯。對于目前大盤高位震蕩&#xff0c;很多人選擇落袋為安&#xff0c;持幣過節&#xff0c;不失為明智之舉。但你知道嗎&#xff0c;持幣過節也能讓錢生錢。今天我就來為各位講講其中的奧…

關于cat命令修改文件內容(導入變量符號以及變量內容)

關于cat命令修改文件內容&#xff08;導入變量符號以及變量內容&#xff09; cat >1.txt<<END $11 $22 $1 $2 END 查看文件內容為&#xff1a; [rootserver04 ~]# cat 1.txt 1 2[rootserver04 ~]# 說明導入的$1,$2自動被解析了。但是當我們想輸入一些變量而不被解析…

Android - AsyncTask你知道多少?

http://www.cnblogs.com/qlky/p/5658070.html 為什么asyncTask最好在主線程初始化&#xff1f;在子線程怎么辦&#xff1f; AsyncTask四個方法的執行順序&#xff1f; mWorker和mFuture對象分別是什么&#xff1f;有什么作用&#xff1f;和doInbackground還有postExecute有什么…

2020-3-15

題目一&#xff1a; 問答 請寫出如下代碼運行后產生的結果&#xff0c;并給出解釋&#xff0c;說明結果是如何得出的。 setTimeout(() > console.log(a)); Promise.resolve().then(() > console.log(b);).then(() > Promise.resolve(c).then((data) > {setTimeout…

Kong-dashboard 安裝 啟動運行

Kong Dashboard 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Kong is a scalable, open source API Layer (also known as a API Gateway, or API Middleware). Kong runs in front o…

自動讓錢生錢方法100%安全穩定

中國區網友問題&#xff1a;   手里有一些余錢&#xff0c;希望找一個方法能夠讓錢自動生錢。最好不要讓我煩心的&#xff0c;能夠自動操作。并且不能有風險&#xff0c;本錢絕不能有風險&#xff0c;利潤要很豐厚才可以。像銀行存款、股票基金就不要介紹了。因為前者生錢太慢…

linux lnmp15 部署laravel項目

使用composer創建一個 laravel項目 安裝composer&#xff1a; https://www.jianshu.com/p/ce1d36cbe00f composer create-project laravel/laravel5.5.* --perfer-dist /home/web/blog 復制代碼添加虛擬主機配置文件 sudo lnmp vhost add 復制代碼注&#xff1a;由于laravel的入…

ReentrantLock源碼

ReentrantLock與Synchronized區別在于后者是JVM實現&#xff0c;前者是JDK實現&#xff0c;屬于Java對象&#xff0c;使用的時候必須有明確的加鎖(Lock)和解鎖(Release)方法&#xff0c;否則可能會造成死鎖。 先來查看ReentrantLock的繼承關系(下圖)&#xff0c;實現了Lock和Se…

2020-3-16

題目一&#xff1a; 如何用js獲取checked屬性值。 通過checked屬性可以設置復選框或者單選按鈕處于選中狀態。 <!DOCTYPE html> <html> <head> <meta charset" utf-8"> <script> window.onload ()>{let ckdocument.getElementByI…

讓錢生錢!商人賺錢的6條方法

錢&#xff0c;這個是做商人第一件需要了解的東西&#xff0c;如何讓錢生錢呢 商人須知&#xff1a; 1、賺錢第一要手上有余銀&#xff0c;倒買倒賣相信大家見多了把&#xff0c;手上最好有100W&#xff0c;最少也要50W&#xff0c;如果沒有&#xff0c;就先積累哪么多&#xf…

【轉】Snackbar和Toast的花式使用,這一篇就夠了

https://www.jianshu.com/p/e023bfb6466b 轉載于:https://www.cnblogs.com/tc310/p/10679042.html