Codeforces 632D Longest Subsequence 水題
阿新 • • 發佈:2018-12-19
文章目錄
題意
題解
水題.不會做真是鍋大了. 首先一看資料範圍,.哎呦我去,怎麼做. 哎呦我去,辣雞. 首先把小於或者等於的數字和它的下標儲存下來. 我們定義是數組裡的約數出現的個數. 我們可以輕鬆地把陣列在調和級數複雜度內處理出來. 接下來取出來的最大值就是陣列的最大值,此時取出來的所有數字的最小公倍數就是最大值的下標. 最後掃一遍把所有能整除最大值下標的數字下標輸出即可. 謝謝大家.
#include<bits/stdc++.h> //Ithea Myse Valgulious
using namespace std;
const int yuzu=1e6;
typedef int fuko[yuzu|10];
fuko a,b,cnt;
int main(){
int n,m,i,x,top=0,j;
for (read(n),read(m),i=1; i<=n;++i)
if ((x=read())<=m) ++cnt[a[++top]=x],b[top]=i;
for (n=top,i=m;i;--i)
for (j=i<<1;j<=m;j+=i) cnt[j]+=cnt[i];
int llx=-1,p;
for (i=1;i<=m;++i) if (cnt[i]>llx) llx=cnt[i],p=i;
write(p),p32,write(llx),pl;
for (i=1;i<=n;++i) if (p%a[i]==0) write(b[i]),p32;
}