JZOJ 省選模擬 Moorio Kart

2021-10-05 20:09:11 字數 1692 閱讀 9923

description

由於目前可供奶牛們使用的約會**並沒有給 farmer john 留下深刻印象,他決定推出乙個基於新匹配演算法的奶牛交友**,該演算法可基於公牛和母牛間的共同興趣對公牛和母牛進行匹配。

bessie 在尋找情人節 barn dance 的合作夥伴時,決定試用這個**。在註冊賬戶之後,fj 的演算法為他給出了乙個長度為 n(1≤n≤10^6) 的匹配列表,列表上每頭公牛接受她舞蹈邀請的概率為 p (0bessie 決定向列表中的乙個連續區間內的奶牛傳送邀請,但bessie希望恰好只有乙個奶牛接受邀請。請幫助 bessie 求出恰好只有乙個奶牛接受邀請的最大概率是多少。

input

第一行輸入乙個整數 n。

接下來 n 行,每行包含乙個整數,它的含義是 pi​ 乘以 10^6後的結果。

output

請輸出恰好只有乙個奶牛接受邀請的最大概率乘以 10^6106 後向下取整後的結果。

sample input

3300000

400000

350000

sample output

470000

樣例的最優方案是向第二和第三隻奶牛傳送邀請。

data constraint

子任務:對於 25% 的資料,n≤4000 。

其實就是給你乙個森林,讓你每一棵樹選一條路徑,組成乙個環,使得環長≥y ,求滿足要求的樹個數。

由於n只有1500,所以可以n^2求路徑

然後就變成了問給你幾個集合,從這些集合中每個集合選擇乙個數,問和≥y 的方案和。這是乙個簡單揹包問題。求方案和可以順便求出。

#include

#define ll long long

using

namespace std;

const

int n=

1577

,yy=

2577

,mod=

1e9+7;

int n,m;

struct e

e[n<<1]

;int ls[n]

,cnt;

void

add(

int u,

int v,

int w)

,ls[u]

=cnt;

}int x,y,fa[yy]

;void

clear()

intgf

(int u)

int cn,bl[n]

,num[n]

[yy]

,sum[n]

[yy]

;void

init

(int u,

int fr,

int id)

}void

dfs(

int u,

int fr,

int len)

}int de[yy][2

],las[yy][2

];intfac

(int u)

void

solve()

}printf

("%lld\n"

,(ll)de[y][1

]*fac(cn-1)

%mod*

((mod+1)

/2)%mod);}

intmain()

JZOJ 省選模擬 string

一行乙個整數表示答案。sample input 樣例輸入 3 3sample output 樣例輸出 首先我們忽略重複的字串,定義 n 表示長度為 n 的回文串,或由兩個回文串拼成的字串數量。那麼可以通過列舉第乙個回文串的長度 可以為 0 可以算出f n 但是正如剛才所說,會對如 abaaba 這樣...

JZOJ 省選模擬 挖寶

description 有乙個挖寶遊戲,它在一棵 n 個點的樹上進行,寶藏埋在某個未知的點 每次挖掘乙個點 u,玩家得到的反饋資訊是乙個數值 d,表示 u 號點到 號點簡單路徑上的邊數。這個遊戲會進行 q 次,每次遊戲藏寶的位置不一定相同。你作為一名優秀的 er,對自己無比自信。你希望用最少的挖掘次...

JZOJ 省選模擬 死星(deathstar )

樣例 1 輸入 4 3b4 樣例 2 輸入 6 4af00 sample output 樣例 1 輸出 2樣例 2 輸出 三元環 可以直接列舉兩個點,利用 bitset 計算出第三個點有多少種可能。注意到乙個不合法的三元環等價於存在乙個出度為 2 的點,計算所有三元環內這樣的點數 之和即可,這樣更快...