原创 快速傅里葉變換(FFT)

FFT,是用來在O(nlogn)時間複雜度內解決關於單一元素的多項式*多項式問題的算法。 衆所周知,一個關於x的n項式可以表示爲a[0]+a[1]*x+a[2]*x^2+...+a[n-1]*x^(n-1),這就是係數表示法。 我們考慮另

原创 近期總結

7.31: 1、(p-2)!%p=1  (p爲質數) 感性證明:2~p-2中每個數必然存在它的逆元,互相抵消爲1 2、費用流建圖時,要讓一個點只能經過一次,且有相關費用,可以將它拆成兩個點,用中間的邊(流量1)來限制(經過這條邊才表示真正

原创 乘法爆long long的解決方案

我們有兩個數a,b,要求a*b%p的結果。 如果a和b雖然都不超過long long,但乘在一起就超過了怎麼辦呢? 這裏提供兩種解決方案,適用於兩種不同情況。 1、用龜速乘。 我們來想想,a*b的本質是什麼?是b個a相加對吧? 相信大家都

原创 NOIP2018提高組遊記

蒟蒻初三了還上不了四百的說…… 算了算了就這樣吧…… 加上意外失分其實是可以四百有餘的…… Day1普及+Day2省選=提高?! CCF腦子有坑啊……   Day 0 下午六點左右從紀中出發,八點左右到廣州某維也納酒店。 這次的考場是六中

原创 線性O(n)求1~n逆元

求某個數的逆元,我們可以用log(n)的時間算出來。 但是,如果是求1~n的所有逆元呢?是不是就要用nlog(n)的時間了? 其實我們有一種線性的方法,可以在O(n)的複雜度求出1~n的逆元。   先假設模數y=ax+b 則ax+b0  

原创 NOIP2018初賽提高組答案

我77分,座標廣東中山,看看能不能過吧

原创 5871. 【NOIP2018模擬9.15】挑戰

題面: 比賽時就差30秒就能把滿分程序交上去了,我還能說什麼好…… 題解: 題意是1~n個非負整數有m次修改,每次修改後求出一個最小的位置t,使得sum[1~t-1]=p[t]。 假設當前修改的位置x在上次得出的答案位置的後面,那麼答案

原创 c++讀入優化模板

int getint() { char ch=getchar(); while (ch<'0' || ch>'9') ch=getchar(); int res=0; while ('0'<=ch &&

原创 【NOIP2015提高組Day1】鬥地主

前言: ·可以不用DP,只用DFS。 ·跑得要比用DP的快很多。我只用了1ms。 關於題目描述的注意事項: ·大王、小王可以算作對子。 ·四帶可以帶一對,因爲你可以把那對看成兩個單張。 正文: ·DFS順序是先枚舉順子,再枚舉四帶、三帶。

原创 可持久化線段樹(主席樹)淺析及圖解(附沒有使用結構體、鏈表、指針的標準新手模板及詳細註釋)

你的每一個贊,我都當作了喜歡印子:先看一個問題:給出n個數,m個詢問每次詢問l,r,k,求[l..r]區間內第k小的數是什麼?一種簡單的思路是每次把[l..r]區間的數取出來,做一次快排,得到第k小。時間複雜度是O(mnlog(n))的,

原创 c++自帶優先隊列用法

c++自帶優先隊列用法(據說比手打慢): 定義:priority_queue<數據類型, 容器類型, 比較方式>  (寫在定義數組的位置)  //升序隊列 (這裏一定要有空格,不然成了右移運算符↓) priority_queue <in

原创 一些技巧&套路&注意事項 (持續更新)

前言: 比賽做題其實有很多的技巧和套路,還有一些奇奇怪怪需要注意的地方。 在這裏,我就根據自己的經驗來寫一寫。   這會是一個很大的坑。 等着以後慢慢填吧。   雖然說這主要是寫給自己看的, 但還是希望大家看完後覺得好的點個贊。   正文

原创 雙向A*算法淺析

前言: 本文基於我寫的A*淺析http://blog.csdn.net/jz_terry/article/details/77414990 建議先看完A*淺析再看本文。 引入: 衆所周知,雙向BFS是對BFS極大的優化,它從起點和終點開

原创 Heatwave

題目: Description   給你N個點的無向連通圖,圖中有M條邊,第j條邊的長度爲: d_j.   現在有 K個詢問。   每個詢問的格式是:A B,表示詢問從A點走到B點的所有路徑中,最長的邊最小值是多少? In

原创 GDOI2018遊記

中山一中。我家對面。酒店黨校到一中都比我家到一中遠。沒錯我家就是那個前段時間(貌似過得挺久了)車位問題鬧得沸沸揚揚的朗晴軒。GDOI和期中考撞車?,於是期中考果斷棄療。Day 1七點半到,一直在門口玩手機刷知乎。八點進場。試機打了個a+b