原创 hdu6031 Innumerable Ancestors

題目 答案明顯滿足二分性質,所以我們可以先二分出答案的深度,然後判斷的話,把A集合用倍增跳到那個深度,再對B集合做同樣的操作,判斷兩個祖先集合的交是否爲空集,只要用map就可以呢。 還有另外一個解法,就是深度最大的LCA在DFS序

原创 bzoj5090 組題

題目 好久好久沒有更新博客了,現在開始要好好學了。 分數規劃第一題吧,第一次聽說這個東西是在冬令營,現在算是做過一道題了吧。 二分最後的答案,之後把原數組每個數都減去這個答案,如果這個解成立的話,必須有一段區間和爲正數,這樣的話,

原创 bzoj3411 [Usaco2009 Dec]Bobsledding 高山滑雪

題目 貪心題目。。 如果知道一段路程的起始速度和終點的限制速度,那麼最大速度就可以很輕鬆的求出來。 但是,有一點值得注意,每一個點的速度限制可能是假的,因爲如果到了最大速度,到下一個點速度可能降不下去。所以,就要先從後往前掃一遍來

原创 bzoj1823 [JSOI2010]滿漢全席

題目 2-sat裸題,最近剛剛學了這個東西,畢竟NOI考過呀。 建邊就是考慮限制條件如果x選什麼,y就一定選什麼之類的,然後跑一遍tarjan縮點,如果存在一個點和它的相反點在一個強連通分量中,那麼就沒解,否則一定有解。 至於輸出

原创 杜教篩學習筆記

考慮求解以下問題: ∑ni=1μ(i) ∑ni=1φ(i) ∑n(i=1)μ(i)ik 令M(i)=∑ni=1μ(i) 發現 ∑ni=1M([ni])=∑ni=1∑[ni]j=1μ(j) ∑ni=1∑[ni]j=1μ(j)=∑

原创 莫比烏斯函數學習筆記

(1) 定義 e(n)=⟮1 n=10 n≠1 I(n)=1 id(n)=n σ0(n)因子個數 σ1(n)因數和 μ(n)莫比烏斯函數 φ(n)歐拉函數 (2) 狄利克雷卷積 h(n)=∑d|nf(d)g(

原创 bzoj4916 神犇和蒟蒻

題目 首先,由μ 的性質知道,第一問的答案一定爲1。 考慮第二問。 φ(i2)=iφ(i) 令Φ(i)=∑ni=1iφ(i) 則發現 ∑ni=1iΦ([ni])=∑ni=1i∑[ni]j=1jφ(j) ∑ni=1i∑[ni]j=

原创 bzoj5018 [Snoi2017]英雄聯盟

題目 嗯,其實吧,還是算比較顯然的dp。 f[i][j]表示前i個英雄,用了j元錢的最多方案數,最後答案就是滿足f[n][j]≥m最小的j了。 轉移方法,首先,肯定要枚舉i,然後枚舉當前買幾個皮膚j,再枚舉l表示f[i][l]從什麼轉

原创 bzoj2820 YY的GCD

題目 這肯定要用卷積的,我們來推一推公式。 我們先令n=min(n,m) ,m=max(m,n) 則 ans=∑p∑ni=1∑mj=1gcd(i,j)==p ans=∑p∑[np]i=1∑[mp]j=1gcd(i,j)==1 ans

原创 bzoj5016 [Snoi2017]一個簡單的詢問

題目 首先,可以確定的是,這一定是一道數據結構的題,但是,題目詢問的式子過於複雜,我們要先考慮化簡一下。 首先,吧get(l,r,x)變成get(r,x)−get(l−1,x)是非常顯然的,新的get(n,x),表示1…n有幾個x get

原创 loj125 杜教篩

題目 由題目猜算法系列。 已知f(n)=∑d|ng(d)與g(n)=2n2+3n+5,求∑ni=1f(i) 令F(i)=∑ni=1f(i) 則發現(前面的係數需要湊一湊) ∑ni=1μ(i)F([ni])=∑ni=1μ(i)∑[ni

原创 bzoj3529 [Sdoi2014]數表

題目 如果不考慮a的限制,這道題就簡化了一下。 令f(x) 表示x的約數和,g(x)=∑ni=1∑mj=1[gcd(i,j)==x] 那麼,ans=∑ni=1f(i)g(i) ,由某道題可得g(i) 的表達式。 YY的GCD g(i

原创 bzoj4320 ShangHai2006 Homework

題目 學習了一種新知識,根號分治,也叫bigsmall。其主旨思想就是把每個問題分成大於n  √   與小於n  √   的來考慮。 對於這道題,我們可以對Y分類。記m=n  √   1.如果Y≤m  ,可以用一個數組g[i],

原创 bzoj3028 食物

題目 母函數,數學題,大概就是推公式吧。 承德漢堡:1+x2+x4+⋯=11−x2 可樂:1+x 雞腿:1+x+x2 蜜桃多:x+x3+x5+⋯=x1−x2 雞塊:1+x4+x8+⋯=11−x4 包子:1+x+x2+x3 土豆

原创 bzoj3944 Sum

題目 杜教篩第一題。 數學推導過程詳見這裏 具體實現的時候要用一個hash表或者map存一下,其實感覺兩個東西差不多快。想要提高速度應該調一調M的大小,可以三分試一試呀。 #include<bits/stdc++.h> #define l