2020 3 28 C組模擬賽題解

2021-10-05 11:08:29 字數 4377 閱讀 9587

t1:羊羊整除

t2:羊羊吃草

t3:羊羊修路

t4:羊羊列隊

羊年到了,村長開始教小羊學習pascal語言,剛開始學習四則運算。村長在白板上寫下兩個整數16和3,問小羊們,有16隻羊,平均分到3個羊村,每個羊村分到的數量必須相同,這個分配的數量最大是多少?小羊們很快就得到了答案,每個羊村分到5只,有1隻羊就只能落單了。村長在白板上寫下5。沒錯,這個就是div(整除)的用法!

為了檢驗小羊們是否掌握了整除運算,村長要求小羊們輪流從白板上任意選取兩個不同的數,由大數整除小數,若所得結果沒有出現在白板上,就將該值寫在白板上。直到小羊們再也找不到沒出現過的整數。

雖然這樣上課很鍛鍊小羊們的運算能力,但是課堂時間有限。為了控制課堂時間,村長想要知道,根據當前白板上的數字,最終白板上會出現幾個數字?現在請你幫他編寫乙個程式快速計算一下吧!

第一行乙個整數n,表示當前白板上出現的整數個數。

第二行n個整數,中間用空格分隔,表示當前在白板上的數字,保證每個數字都不相同。

輸出乙個整數,表示最終白板上數字的個數。

【樣例輸入1】

2

163

【樣例輸入2】

3172

1

【樣例輸出1】

4
【樣例輸出2】

5
暴力標記計數即可,要從後往前推,不多說。

#

include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

bool a[

105]

;int n,x,i,j,ans;

intmain()

for(i=

100;i>=

1;i--)if

(a[i]

)for

(j=i-

1;j>=

1;j--)if

(a[j]

) a[i/j]=1

;for

(i=100

;i>=

1;i--)if

(a[i]

) ans++

;//倒推ans++

cout

}

小羊們上完課後,紛紛到草場上吃草。而羊村現在正在進行特色示範羊村檢查,領導們想看看羊村的草場。

羊村的草場是連續分布的,每塊草場上都有數量不等的羊在吃草。領導們想要檢視連續若干個草場,但是又不想看到超過t隻羊。而村長希望領導們多看看羊村的風貌,盡可能多參觀幾個草場。

現在,請你幫村長決定,帶領導們去參觀哪一段草場,滿足領導和村長的要求。

第一行乙個整數n和t,表示羊村共有多少個連續草場,以及領導們希望看到羊數量的最大值。

第二行n個整數,兩個整數間用乙個空格分開,第i個數ai表示第i個草場上有ai隻羊在吃草。編號從1到n。

輸出一行,共兩個數,表示參觀的起點編號和終點編號,中間用空格分開。走的方向總是從編號小的到編號大的。另外,若有長度相同的可能性,輸出起點編號較小的答案。資料保證至少有答案存在。

5106

3217

2

4

這道題,字首和+二分即可。

注意二分while條件,變數開long long

答案即左端點、右端點

#

include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

ll a[

100011];

ll n,x,i,j,l,r;

ll t,ans;

intmain()

ans=

0;i=0;

while

(ielse

break;}

cout<" "

return0;

}

經過特色示範羊村檢查,檢查組覺得羊村的道路需要重修,破敗的道路,會影響到小羊們上學的安全。

村長組織施工隊,開始丈量距離,規劃施工方案,已經得到了若干建築物間修建道路的可行方案,共有n個建築物,和m條可選道路。這些路保證可以將n個建築相連。

最終方案中,羊村打算修建全球最豪華的全大理石道路,道路可以雙向通行,且一體成型,路中無縫隙。為了達到這個設計要求,就必須自建大理石工廠!

大理石工廠建造的難度在於,必須根據其需要生產最大長度的大理石來設計。工廠可以生產出不超過其設計極限的任意長度的大理石。例如,設計長度為100的工廠,可以生產100、90等長度的大理石,但是不能生產長度為101的大理石。

羊村的預算有限,希望你能幫忙規劃出乙個修路方案,使得工廠的設計規模盡可能小,且可以保證其能生產的大理石可以連通所有羊村的建築。求出工廠的最小設計規模。

第一行兩個整數n和m,n表示羊村中的建築數量,m表示可以修建的道路數量。

接下來m行,每行三個整數ai,bi和ci,表示從建築ai,到建築bi,可以修建一條長度為ci的道路。

注意,建築編號從1到n,兩個建築之間可能有多條道路。

輸出大理石工廠的最小設計規模。

331

210023

1011

399

100
這道題就是最小生成樹的板子(模板)。

#

include

#include

#include

using

namespace std;

long

long m,n,dis[

3001

],v[

3001

],head[

3001

],tot;

struct

node

b[30010];

voidg(

int x,

int y,

long

long w)

intmain()

memset

(dis,

100,

sizeof

(dis));

dis[1]

=0;int x=

1,maxx=0;

for(

int i=

1;i<=n;i++)}

v[x]=1

; maxx=

max(maxx,minn)

;for

(int j=head[x]

;j;j=b[j]

.next)}}

cout

return0;

}

在修建完新路後,小羊們總算可以安心入學了。今年是羊年,新入學的小羊特別多。老師們打算將n只小羊分成m個班級,每個班至少有1隻羊。

如何分班成了老師們最頭疼的事情,因為開學典禮上,村長就要看到小羊們列隊的情況。每個班的小羊都排成一排,站在草場上。村長希望佇列中羊的高度盡可能整齊,村長對佇列的不整齊度有自己的要求。

例如佇列中共有t隻羊,高度依次為a1,a2……,at。那麼不整齊度為:(|a1-a2|+|a2-a3|+……+|at-1-at|)^2。即相鄰兩隻羊高度差之和的平方。

而總體的不整齊度,就是各班不整齊度之和。

現在,請你幫助老師們設計一下,如何分班,如何列隊,才能使m個班級的不整齊度之和最小。

第一行兩個整數n和m,分別表示共有n只小羊,要被分成m個班級。

第二行n個整數,表示每只小羊的高度ai。

輸出最小的不整齊度之和,結果保證不會超過2^31-1。

424

132

2
看到群裡的dalao們說,這題超綱了。

能拿到部分分的做法是dp,但還要加斜率優化

2020 3 28 C組羊羊列隊 DP

在修建完新路後,小羊們總算可以安心入學了。今年是羊年,新入學的小羊特別多。老師們打算將n只小羊分成m個班級,每個班至少有1隻羊。如何分班成了老師們最頭疼的事情,因為開學典禮上,村長就要看到小羊們列隊的情況。每個班的小羊都排成一排,站在草場上。村長希望佇列中羊的高度盡可能整齊,村長對佇列的不整齊度有自...

2020 3 11 C組模擬賽題解

t1 水果盛宴 t2 憤怒的奶牛2 t3 採訪 t4 房間開燈貝茜又再一次地闖入了 farmer john 的房子!她在廚房發現了一堆檸檬和一堆橘子 每堆都有無限多個 並且,她希望盡可能地多吃。貝茜的有乙個飽腹值上限 t 1 t 5,000,000 吃乙個橘子會增加她 a 點飽腹值,吃乙個檸檬會增加...

2020 3 14 C組模擬賽題解

t1 探索的奶牛 t2 單詞 t3 牛車 t4 危險係數fj的奶牛喜歡探索農場周圍的地形。一開始,所有n 1 n 1,000,000,000 只奶牛一起出發,但當碰到路口時,這一群牛可能會分成兩部分 不能為空 每一部分都繼續前進,當碰到另乙個路口時,再分成兩部分,如此反覆下去。假設路上到處都是新的岔...