hiho 1165 益智遊戲(因子個數 貪心)

2021-07-02 05:06:39 字數 1273 閱讀 1815

時間限制:

20000ms

單點時限:

1000ms

記憶體限制:

256mb

幽香今天心情不錯,正在和花田裡的蟲子玩乙個益智遊戲。

這個遊戲是這樣的,對於乙個陣列a,幽香從a中選擇乙個數a,蟲子從a中選擇乙個數b。a和b可以相同。她們的分數是a*b的因子的個數。

幽香和蟲子當然想要獲得盡可能的高的分數,你能告訴她們應該選擇哪兩個數嗎。

由於幽香是個非常隨意的人,陣列a中的元素都是她隨機選擇的。

一行乙個數n,表示a中整數的數量。

接下來一行n個數,分別表示a1,a2,...,an,為a中的元素。

n <= 100000, 1 <= ai

<= 100000

保證所有的ai都是隨機生成的。

一行表示最大的分數。

樣例輸入

2

3 4

樣例輸出

6

乙個陣列中有n個數  現在要從這個陣列裡面隨機挑選兩個數(可能相同) 

使得這兩個數相乘所得數中因子個數最多

一開始想的就是把陣列中所有數進行素因子分解 儲存素因子的個數 

然後列舉 從陣列中挑選兩個數的情況 相乘 根據素因子的情況求出因子個數

顯然會tle

在這裡可以貪心 根據數分解後得到的素因子種類的個數和素因子總的個數 進行排序

選取前面的100個進行列舉計算就可以了。。。

#include #include #include #include #include #include #include #include #include #define mem(a,x) memset(a,x,sizeof a)

#define eps 1e-8

#define mod 10009

#define maxn 100010

#define maxm 100010

#define inf 99999999

#define ll long long

#define bug cout<<"here"else return cnt2>no.cnt2;

}}no[maxn];

void divide(int id)}}

if(x>1)

}ll cal(ll x)}}

if(x>1) num[++cnt]++;

ll res=1;

for(int i=1;i<=cnt;i++)

{// cout<<"i "<

11 6學習筆記

優點 1 有序性。2 紅黑樹結構。效率比較高,很多操作都可以在logn的時間複雜度下實現。缺點 空間佔用率高。紅黑樹雖然提高了執行效率,但是每乙個節點都需要額外儲存父節點 孩子節點以及紅 黑性質,使得每乙個節點都需要占用大量空間。適用場合 對於有順序要求的問題,map更加高效。優點 由於內部實現為雜...

機房測試 11 6

電子科大的題,整體不錯,就是t3水了點。但是分3頁pdf是無法接受的 歡迎 ssw02的部落格 為什麼叫三教呢 ssw02還是個高中生,當然不知道了。讀入 第一行兩個非負整數 表示表示補給點個數和需要收集的體力數 第二行 n 個非負整數 第 i 個整數表示在不觸發 bug 的情況下補給點 提供的體力...

116 跳躍遊戲

給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。注意事項 這個問題有兩個方法,乙個是貪心和動態規劃。貪心方法時間複雜度為o n 動態規劃方法的時間複雜度為為o n 2 我們手動設定小型資料集,使大家可以通過測...