首先把底數 \((-1)\) 消掉:
\[(-1)^n=1-2\times (n\%2)=1-2\times (n-\lfloor\frac n 2\rfloor\times 2)
\]令 $k=\sqrt r $,所以原式等於:
\[\begin
\sum\limits_^n(-1)^&=\sum\limits_^n (1-2\times(\lfloor ik\rfloor-\lfloor \frac2\rfloor\times 2 ))\\
&=n-2\sum\limits_^n \lfloor ik\rfloor + 4\sum\limits_^n\lfloor \frac2 \rfloor
\end
\]發現後兩項都是形如 \(\sum\limits_^n \lfloor ik\rfloor\) 的形式,可以統一做。
如果 \(k\geq 1\),則可以考慮將 \(i\lfloor k\rfloor\) 提出來,這裡不再贅述,只考慮 \(k<1\) 的情況。
考慮這個式子的幾何意義:直線 \(y=kx,y=0,x=n\) 圍成的三角形中的格點個數(不包括 \(y=0\) 上的點)。
我們把影象沿 \(y=x\) 翻轉(然後取個補集),式子就變成了 \(\sum\limits_^\lfloor\frac 1 k i\rfloor\)。
發現 \(n\) 嚴格遞減,可以證明複雜度是 \(log\) 級別的。
**:
#include#include#include#include#includeusing namespace std;
typedef long long ll;
ll n,r;
long double sqr;
ll calc(ll n,ll a,ll b,ll c)
void init()
void work()
ll ans=(n-2*calc(n,1,0,1)+4*calc(n,1,0,2));
printf("%lld\n",ans);
}int main()
UOJ37 清華集訓2014 主旋律
link 然後列舉縮點之後的dag的情況,考慮計算可行的邊集方案數,再遞迴乘上所有scc的匯出子圖的答案。計算可行的邊集方案數可以考慮dp,設 f s 表示點集 s 的匯出子圖中使得子圖形成乙個dag的邊集方案數,那麼可以得到轉移 f s sum limits 1 f 2 其中 cnt 表示的是起點...
UOJ37 清華集訓2014 主旋律
設 f s 為點集 s 中強連通生成子圖的方案數,cnt s 為點集 s 構成的誘導子圖中邊的個數。考慮用 2 減去不合法方案數來計算 f s 不合法情況即為縮點後為 dag 設 h s 為點集 s 縮點後構成點數 1 的 dag 的方案數。考慮列舉乙個點集 t 其由若干個出度為 0 的強連通分量構...
清華集訓 2014 玄學
update text update 我之前講的是個什麼鬼 如果想看看人話版本 戳這。感覺自己被坑騙了。題目明明寫了所有資料不超過int,敢情是輸入資料不超int?迷惑行為 題目感覺有點繞,我盡量 不口胡。首先我們搞一顆線段樹1,樹表示插入序列的編號。如,在q行中第i個出現插入操作 其實拿到這道題我...