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 只奶牛一起出發,但當碰到路口時,這一群牛可能會分成兩部分 不能為空 每一部分都繼續前進,當碰到另乙個路口時,再分成兩部分,如此反覆下去。假設路上到處都是新的岔...