1. 程式人生 > >聯考8.5

聯考8.5

建立 運動 esp ont 估算 生活 由於 ret 指數

day2的暴力分拿的還算穩,然而只會打暴力......

T1數論題, 30分暴力直接走人

T2很像一個DP,先打了暴力留著對拍,結果剛了兩個小時毛都沒寫出來,暴力也萎了......

T3最小生成樹啊,碼完kruskal直接走人,後來才知道prim可以拿60分,我ri......

30+0+30=60

T1 挖掘機技術哪家強:

題目描述:

有人問現實中為什麽總是男生追求女生,反過來很少。實際上女生也是想主 動追求男生的,但是世俗中對於主動追求男生的女生有種歧視,這樣就使得女生 不大敢主動追求男生。但是面對喜歡的男生,難道就不出手麽?女生只能步步為 營,挖坑來引誘男生往裏跳。這時候問題就來了,挖掘機技術到底哪家強? 被熱血沸騰的廣告洗腦了若幹天後,Matt 終於下定決心,毅然登上了開往 泉城的列車,決心尋找生活的希望。 來到布魯謝特學院後,Matt 逐漸地了解了各種型號的挖掘機。在這裏我們 可以認為有大挖掘機和小挖掘機兩種。 今天 Matt 的任務很簡單: 首先他要用大挖掘機挖出恰好 N 單位體積的砂土。 由於小挖掘機比較笨拙,它每次挖的砂土體積是固定的。也就是說,設每次挖 x 單位體積砂土,那麽 N 需要被 x 整除。在挖出若幹堆體積為 x 的砂土後,Matt 需要計算 x 的“難挖指數” 。體積 x 的“難挖指數”定義如下:對於某個不超過
x 的體積 y,如果 x 與 y 的最大公約數為 1,那我們認為體積 y 是“難挖的” ,x 的“難挖指數”就要加上 y。 由於 Matt 之後還需要用小挖掘機處理被大挖掘機挖出的砂土,他希望知道 所有可能的 x 的難挖指數的和,這樣他好估算今天要幹多久,不然作為布魯謝特 的高才生,他出門要被笑話的。

T2 孤獨一生

題目描述:

下課了,Polo 來到球場,但他到了之後才發現…..被放了飛機…… 無事可做的他決心找點樂子,比方說……跳臺階…… 球場邊有 N 個臺階拍成一行,第 i 個臺階的高度是 Hi(0<Hi<=10^9),第 0 個臺階,也就是地面的高度為 0。 Polo 打算把這 N 個臺階分成兩個集合 Sa,Sb(可 以為空) ,對於一個臺階集合 S={P1,P2,...P|S|},其中 P1<P2<...<P|S|,他需要花費 ∑|H_p_i-H_p_i-1|的體力值來完成。 現在他希望兩次跳躍所需的總體力值最小,你能幫幫他嗎?

50分暴力:

 1 #include<cstdio>
 2
#include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 #include<cmath> 6 #include<algorithm> 7 #define ll long long 8 using namespace std; 9 10 const int maxn = 5010; 11 12 int n,h[maxn]; 13 ll dp[maxn][maxn]; 14 15 int main() { 16 scanf("%d", &n); 17
for(int i=1; i<=n; i++) scanf("%d", &h[i]); 18 memset(dp,127/3,sizeof(dp)); 19 dp[0][0]=0,dp[1][0]=dp[0][1]=h[1]; 20 for(int i=0; i<=n; i++) { 21 for(int j=0; j<i-1; j++) { 22 dp[i][j]=dp[i-1][j]+1ll*abs(h[i]-h[i-1]); 23 dp[j][i]=dp[i][j]; 24 } 25 for(int k=0; k<i-1; k++) { 26 dp[i][i-1]=min(dp[i][i-1],dp[k][i-1]+1ll*abs(h[i]-h[k])); 27 dp[i-1][i]=dp[i][i-1]; 28 } 29 } 30 ll ans=1000000000000000; 31 for(int i=0; i<n; i++) { 32 ll res=min(dp[n][i],dp[i][n]); 33 ans=min(ans,res); 34 } 35 printf("%lld", ans); 36 return 0; 37 }


T3 地殼運動:

題目描述:

JZ 是一個坐落在地殼運動活躍的山區的城市,常受地質災害的襲擊。 城市中建立了 N 個應急避難所以躲避災害,這些避難所從 1~N 編號。此外 有 M 條道路連接這些避難所,所有避難所間均可通過這 M 條道路直接或間接到 達。由於是在規劃良好的市區,道路可以由若幹個平行於 x 或 y 坐標軸的線段組 成,所以避難所 xi 和 yi 之間的道路可以用(ui,vi)來表示,道路的長度為 ui+vi。 由於地殼運動會導致地面拉伸或收縮, 可用兩個實數k1,k2 描述城市的伸縮程度, 此時某條道路的實際長度變ui*k1+vi*k2。有若幹個獨立的詢問,每次詢問給 出 k1 和 k2,政府都希望在此地殼運動前提下,以最小的花費維護其中一些道路, 使得只用這些被維護的道路仍能使所有避難所間相互連通。 因為花費與道路的實 際總長成正比,所以你需要對每一次詢問求出被維護道路的最短實際總長。

聯考8.5