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 的點,計算所有三元環內這樣的點數 之和即可,這樣更快...