久久久噜噜噜久久熟女,久久久久久久久,国内精品,精品国产成人亚洲午夜福利,久久天堂av综合合色蜜桃网,好姑娘在线观看完整视频高清

首頁 > 體育

今日熱文:『題解』BZOJ3462 DZY Loves Math II

來源:博客園 時間:2023-06-25 07:18:34


(資料圖片)

前言

沒啥前言,擺了擺了。

題面長這個樣子

思路

沒啥思路,擺了擺了。這題總的來說挺難想的,思考過程比較繁瑣,我也就不辭辛勞列舉一下。

  1. 顯然,條件 \(2\) 和條件 \(3\) 很好說,放一邊。

  2. 我們設一個質數(shù)數(shù)列 \(\{p_k\}\) ,假定這些質數(shù)是由 \(S\) 分解坤坤數(shù)質因數(shù)得到的,若要滿足條件 \(4\) (即 \(\mathbb{lcm}\{p_k\} = S\) ) ,則需要滿足 \(\{p_k\}\) 中的元素兩兩互不相等,否則無解。\(\\\) 證明顯然。 \(\\\) 設 \(sum = \sum_{i = 1}^{k}{p_i}\) ,我們討論另一種無解的情況。當 \(n < sum\) 時無解。\(\\\) 證明如下:\(\\\) 因為 \(n\) 一定由 \(\{p_k\}\) 中的全部元素組成,當然,每個元素可以有多個。若 \(n < sum\) ,則 \(n\) 一定不能由 \(\{p_k\}\) 中的全部元素組成(因為在這種情況下 \(sum = \sum_{i = 1}^{k}{p_i} > n\) ,就算每個元素只選一個,這些選的元素相加也會比 \(n\) 大),所以便不能滿足條件 \(4\) 。

  3. 下面我們只考慮有解的情況。乍一看,這個題很像多重背包。\(\\\) 你說得對,但是這題數(shù)據(jù)范圍很大,只用多重背包會炸掉。\(\\\) 所以,我們便要采取一些優(yōu)化手段。\(\\\) 設 \(S = p_i \times k_i\) , 則 \(k_i\) 的含義便是除了坤坤子 \(p_i\) 外所有坤坤子的乘積。\(\\\) 設 \(n = \sum_{i = 1}^{k}{p_i \times c_i}\) ,\(c_i\) 是坤坤子 \(p_i\) 出現(xiàn)的個數(shù),對于每一項 \(p_i \times c_i\) ,我們可以寫成 \(p_i \times (x_i \times k_i + y_i),(y_i < k_i)\) ,拆開括號得 \(p_i \times k_i \times x_i + p_i \times y_i\) ,即 \(S \times x_i + p_i \times y_i , (p_i \times y_i < S)\) 。把每一項加在一起便可得 \(n = S \times \sum_{i = 1}^{k}{x_i} + \sum_{i = 1}^{k}{p_i \times y_i} , (\sum_{i = 1}^{k}{p_i \times y_i} < k \times S)\) 。簡化一下(就不設了,知道什么跟什么對應就行)可得 \(n = a \times S + b,(b < k \times S)\) 。\(\\\) 有了這個式子(別管為什么能這么得到這個式子),我們便用加號前面的跑組合數(shù),加號后面的跑多重背包就行。

  4. 組合數(shù)怎么跑?對于 \(a \times S\) ,因為 \(\{p_k\}\) 中每一個元素都是 \(S\) 的約數(shù),所以每個 \(S\) 都可以用任何一個 \(p_i\) 表示。因為有 \(k\) 個坤坤數(shù),所以 \(S\) 最多能表示成 \(k\) 種形式(有的可以不用表示),一共有 \(a\) 個這樣的數(shù),所以轉化一下就是插板法求組合數(shù),(根據(jù)條件 \(3\) 可知是有序的)把 \(a\) 個數(shù)分成 \(k - 1\) 個可空的部分,答案顯然是 \(\mathrm{C}_{a + k - 1}^{k - 1}\)。

  5. 背包怎么跑?我們不知道 \(a \times S\) 和 \(b\) 中是否都存在 \(p_i\) ,所以我們用 \(2\) 的 \(sum\) ,讓 \(b = b - sum\) ,保證每一個 \(p_i\) 都存在,然后我們就可以跑完全背包了。這題讓求方案數(shù),稍微改一下就行了。我們先枚舉每一個坤坤子 \(p_i\) ,先都加上,然后再把多的減去即可(這里我犯懶了Orz)。

完結撒代碼

#include #define LL long longusing namespace std;const int MOD(1e9 + 7), maxn(2000005);inline LL read() {    LL f(1), x(0);    char c = getchar();    for (; !isdigit(c); c = getchar()) if (c == "-") f = -1;    for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c & 15);    return f * x;}LL s, q, n, cnt, sum, M, ans;LL inv[maxn], prime[maxn], v[10], dp[7 * maxn];void DP() {    dp[0] = 1;    for (int i = 1; i <= cnt; ++i) {        for (int j = 0; j + v[i] <= M; ++j) {            if (dp[j]) dp[j + v[i]] = (dp[j] + dp[j + v[i]] + MOD) % MOD;        }        for (int j = M - s; j >= 0; --j) {            dp[j + s] = (dp[j + s] - dp[j] + MOD) % MOD;        }    }}bool divide(LL n) {    LL x = n;    for (int i = 2; i <= sqrt(x); ++i) {        if (!(x % i)) {            v[++cnt] = i;            sum += i;        }        while (!(x % i)) {            ++prime[i];            if (prime[i] == 2) return false;            x /= i;        }    }    if (x > 1) {        ++prime[x];        v[++cnt] = x;        sum += x;    }        return true;}LL QuickPow(LL a, LL b, LL p) {    LL res(1);    for (; b; b >>= 1) {        if (b & 1) res = res * a % p;        a = a * a % p;    }    return res % p;}int main() {    s = read(), q = read();    if (!divide(s)) {        while (q--) {            n = read();            printf("0\n");        }        return 0;    }    M = cnt * s;    DP();    inv[1] = 1;    for (int i = 2; i <= 8; ++i) {        inv[i] = inv[i - 1] % MOD * QuickPow(i, MOD - 2, MOD) % MOD;    }    while (q--) {        n = read();        if (n < sum) {            printf("0\n");            continue;        }        n -= sum;                for (int i = 0; i < cnt && i <= n / s; ++i) {            LL a = n / s - i;            LL b = n % s + i * s;            int res1(1), res2(0);            res1 = inv[cnt - 1] % MOD;            for (int j = 1; j < cnt; ++j) {                res1 = res1 * ((a + j) % MOD) % MOD;            }            res1 %= MOD;            res2 = res1 % MOD * dp[b] % MOD;            ans = (ans + res2) % MOD;        }        ans = (ans % MOD + MOD) % MOD;        printf("%lld\n", ans);        ans = 0;    }}

相關稿件

今日熱文:『題解』BZOJ3462 DZY Loves Math II

今日視點:天通股份(600330):材料與設備共舉 研發(fā)不輟

點雄黃、釣粽子、猜謎、投壺…端午最后一天這里依然熱鬧非凡!

瓦格納人員撤離俄南部軍區(qū)總部所在區(qū)域 天天新要聞

國鐵集團:全國鐵路今日預計發(fā)送旅客1515萬人次

崔永輝調研推進城中村現(xiàn)代化治理工作

中俄戰(zhàn)略合作與烏克蘭局勢:中國應做好最壞打算_環(huán)球熱聞

每日快報!江南華南多地暴雨如注 京津冀魯?shù)鹊鼗蛟偬魬?zhàn)40℃

環(huán)球頭條:在美國,掌握了這項技能,年入570萬不是夢

何雄會見特斯拉汽車(北京)有限公司客人 拓展合作領域豐富合作內容 提供更多新產品新技術新服務

【天天聚看點】俄稱擊退烏軍進攻 烏稱打擊俄導彈系統(tǒng)

端午假期交通部門加強多種出行方式聯(lián)動 今日熱門

微軟宣布恢復Win11文件管理器功能 多項經典功能回歸

從批發(fā)市場到高精尖產業(yè)園區(qū),北京低效樓宇加速“改頭換面”|當前短訊

世界熱議:推動整改復耕須避免“一刀切” “水稻上山”引熱議 農業(yè)部門相關負責人回應網民關切

【全球新視野】創(chuàng)維EV6 II汽車上市:CLTC續(xù)航最高620公里,15.68萬元起

河北200萬臺農機收麥忙-速訊

強鏈延鏈贏得發(fā)展主動權——訪恒力集團董事長、總裁陳建華-每日速訊

天天頭條:江西產業(yè)鏈創(chuàng)新鏈高效融合 組建科技創(chuàng)新聯(lián)合體

玩法“上新” “暑期檔”旅游持續(xù)升溫 環(huán)球視訊

湖北經濟學院法商學院2023屆畢業(yè)生齊聚一堂參加畢業(yè)典禮_世界快看

天天視訊!【鄉(xiāng)村振興】年產值達2.4億!子洲黃芪種植面積達15萬畝

“藍絲帶”護考 交警將為送考車輛開辟“綠色通道”

捆綁兩年PS Plus會員,PS5主機包裝盒曝光

2023商業(yè)物業(yè)市場開發(fā)現(xiàn)狀分析 商業(yè)物業(yè)行業(yè)發(fā)展空間巨大_每日動態(tài)

【房地產開發(fā)】房地產/行業(yè)深度:更新改造、人均居住面積改善驅動未來住宅需求-全球簡訊

2023廣州露營房車展談下未來房車走向和期待

intel Yes!英特爾4小核處理器N100跑分達i5-7400水平_天天看熱訊

環(huán)球報道:“哪涼快哪待著” 青島威海上榜全國前十

消息稱松下將中高端空調生產撤回日本,此前曾與小米達成戰(zhàn)略合作 天天亮點