清華集訓2016Day4

2022-04-28 19:48:13 字數 1560 閱讀 1723

用盧卡斯定理可知滿足條件即將\(n\)和\(m\)分別用\(k\)進製表示,要求\(n\)的每一位都要大於等於\(m\)的對應位。直接數字\(dp\),設\(f_\)表示處理到第\(i\)位,\(n\)是否觸上界,\(m\)是否觸上界時的方案數。複雜度\(o(t\log_kn)\) 。

#include#include#includeusing namespace std;

#define ll long long

const ll mod = 1000000007;

int t,k,l,a[100],b[100];ll n,m,f[100][4];

int main()

printf("%lld\n",(all-f[l][3]+mod)%mod);

} return 0;

}

看見平均值自然可以想到分數規劃。題目中所給的\(k\)可以減到每條邊的權值裡面去,這樣問題就變成了找一條路徑使其平均值的絕對值最小。

先點分,對於每個分治重心做一次二分。假設組成答案路徑的是\((a,b),(c,d)\)這兩個二元組,其中\(a,c\)代表兩條到根路徑的權值和,\(b,d\)代表長度。二分\(-k<\frac,只需要判斷是否存在滿足條件的二元組即可。

先假設\(a+c\ge0\),那麼就只需要滿足\(\frac這個條件,即\(kb-a>c-kd\)。按\(a\)從小到大列舉\((a,b)(a\ge0)\),加入所有使\(a+c\ge0\)的\((c,d)\),維護\(c-kd\)的最小值即可。考慮到\((a,b),(c,d)\)不能來自於分治重心的同一棵子樹,故需要維護來自不同子樹的最小及次小值。

\(a+c<0\)同理,可得\(a+kb>-c-kd\),故維護\(-c-kd\)的最小值即可。

這樣複雜度為\(o(n\log^2n)\)。

#include#include#includeusing namespace std;

#define ll long long

#define pi pair#define mk make_pair

const int n = 50005;

int n,to[n<<1],nxt[n<<1],head[n],cnt,sz[n],w[n],vis[n],root,sum,top,pos;

ll ww[n<<1],ans=1ll<<60;

struct data

data(ll _x,ll _y,ll _z)

bool operator < (const data &b) const

return false;

}bool chk2(ll k)

return false;

}void solve(int u)

for (int e=head[u];e;e=nxt[e])

if (!vis[to[e]])

}int main(){

freopen("soda.in","r",stdin);

freopen("soda.out","w",stdout);

ll k;scanf("%d%lld",&n,&k);

for (int i=1;i咕咕咕

北京集訓隊2016 Day4 超級跳

問題描述 小h最近迷上了一款叫做 超級跳 的休閒遊戲。遊戲中,有n層雲朵。你控制乙個小人,出生在第n層雲朵上,目標是不斷向下跳,最終抵達地面。為了方便,這裡對遊戲做一些簡化。如果建立平面座標系,可以將每層雲朵抽象成一條平行於x軸的線段。第i層雲朵可以抽象成一條縱座標等於i,左右端點的橫座標分別是li...

清華集訓2016 汽水

試題描述 牛牛來到了乙個盛產汽水的國度旅行。這個國度的地圖上有n個城市,這些城市之間用 n 1 條道路連線,任意兩個城市之間,都存在一條路徑連線。這些城市生產的汽水有許多不同的風味,在經過道路 i 時,牛牛會喝掉 wi 的汽水。牛牛非常喜歡喝汽水,但過量地用汽水是有害健康的,因此,他希望在他旅行的這...

清華集訓2016 資料互動

題目描述 乙個簡單的網路系統可以被描述成一棵無根樹。每個節點為乙個伺服器。連線伺服器與伺服器的資料 線則看做一 條樹邊。兩個伺服器進行資料互動時,資料會經過連線這兩個伺服器的路徑上的所有服務 器 包括這兩個伺服器 自身 每個資料互動請求都有乙個非負的重要度,越重要的請求顯然需要得 到越高的優先處理權...