Luogu P2527 模擬出單調佇列

2021-09-30 14:29:42 字數 1410 閱讀 3759

problem description

panda是個數學怪人,他非常喜歡研究跟別人相反的事情。最近他正在研究篩法,眾所周知,對乙個範圍內的整數,經過篩法處理以後,剩下的全部都是質數,不過panda對這些不感興趣,他只對被篩掉的數感興趣,他覺得在這些被篩掉的數中一定隱藏著重要的宇宙秘密,只是人們還沒有發現罷了。

panda還覺得如果只是單純地從小到大篩的話,還不足夠發現其中的奧秘,於是他決定對至多只包含某些質因數的數進行研究(比如說至多只包含質因數2,3的數有2,3,4,6,8,9,……),他需要得到這些數中第k小的數(k是panda認為的宇宙係數),請你編個程式,幫助他找到這個數。

input

第1行有2個數n,k,n代表質因數的個數,k代表那個宇宙係數(1<=n<=100,1<=k<=100000)

第2行有n個數,代表這n個質因數。(每個均小於1000,且不相同)

output

僅1行,即至多只包含這n個質因數的數中第k小的數。(這個數不會超過2000000000)

sample input

2 7

3 5

sample output

45(前6個分別是3,5,9,15,25,27)

這個是 ac 了的程式。

#include 

int n,k,cnt;

int a[1005],b[1005],ans[100005];

int main()

b[minx]++;

if (min!=ans[cnt]) ans[++cnt]=min;

}printf("%d",ans[k]);

}

這個是乙個同學寫的,用了優先佇列 stl,結果處理不好空間爆了。

#include

#include

#include

#define n 110

using

namespace

std;

typedef

long

long ll;

priority_queuevector

,greater>q;

ll ans,x,pre;

int n,m,a[n],tot;

int main()

while(!q.empty()&&totif(x==pre)continue;

tot++;

ans=x;

for(int i=1;i<=n;i++) q.push(x*a[i]);

pre=x;

}cout

<

hdu2527(哈夫曼樹)

題意 建完樹後,判斷下除了葉子結點之外的其他結點之和是否大於題目給出的數字。思路 如果了解哈夫曼樹,就會知道,它是拿出一串數中兩個權值最小的,合成乙個新的,再將這個新形成的加入到那個串中,再操作.這樣,就可以用優先佇列來模擬建哈夫曼樹的過程,從而ac此題。注意 此題有坑,被它弄wa了2次,就是當它有...

BZOJ 2527 Meteors(整體二分)

description 有n個國家和m個空間站,每個空間站都屬於乙個國家,乙個國家可以有多個空間站,所有空間站按照順序形成乙個環,也就是說,m號空間站和1號空間站相鄰。現在,將會有k場流星雨降臨,每一場流星雨都會給區間 li,ri 內的每個空間站帶來ai單位的隕石,每個國家都有乙個收集隕石的目標pi...

Luogu P1208 混合牛奶

這個題目直接開個結構體按 排序,然後一直加加加,就可以了。典型的貪心。include include include include include include using namespace std int i,m,n,j,k,ans struct mana 5001 bool cmp man...