1. 程式人生 > >【2017國慶雅禮集訓】長沙雅禮划水記

【2017國慶雅禮集訓】長沙雅禮划水記

Day 1

一題給出數軸上n個座標xi有權值wi,求由|xixj|wi+wj連邊構成的最大團。
這個式子長得太像兩圓相離或外切的表示了(連數軸都告訴你了呀),於是瞬間變成取最多不重區間的水題。。。
然而我居然忘了還有右端點排序後O(n)的簡單貪心,寫了個O(n2)的dp加二分優化【我太鹹啦】。好在總複雜度還是O(nlogn)不會炸(O_O)
於是20分鐘拍完

當我看到二題的時候,心中突然掠過一絲欣喜——暑假講過的原題啊(笑
但畢竟是線段樹,碼量略大,於是先讀第三題,然後整個人都愉快了起來。(一天兩道原題是要鬧哪樣啊?)(不過也就只有第一天2道,第二天1道是原題。而孔爺告訴我他平均一天一道原題。。。%%%ky

三題關鍵在推出二分性(當時上課的時候,這個二分性還是我志己推出來的呢),二分+數位dp,O(nlognlogn),也可以逐位貪心O(nlogn)。其實逐位貪心反而更好寫,只要對從高到低依次計算“如果這一位是1,會產生多少貢獻”,貪心決策取不取這一位。

然後回去寫第二題。支援取膜、單點修改和求和的線段樹,暴力修改,max剪枝,不打tag,O(nlognlogn)。因為不打tag,比普通區間線段樹還好寫。

寫完後離考試結束還有2個小時,就把二題三題都對拍了。一題暴力比正解還難寫(最大團?)於是就沒拍,反正這麼水的線段覆蓋也不會出什麼鍋,手了幾個極端資料就過了。
這時還剩1個小時,於是就開始自以為是,覺得今天穩了。。。

然而也並沒有很穩,不過270分對我這個菜雞選手來說已經算是心滿意足了。
原來是第三題少了個特判。其實題面中有關於某特殊情況的處理,然而被我忽視了。。。若能引起注意,我一定會想想為什麼會出現這種特殊情況。。。認真讀題!認真讀題!認真讀題!

下午fateice神犇來講dp,晚上雅禮dy0607講了幾道AGC,算是雜題選講吧。。還是挺有意思的,學了點套路。

Day 2

這曾是我離AK最近的一天

一題帶權並查集秒了。考完後聽他們每個人的做法真是千奇百怪,有寫dp的,還有類似人腦做法的。題解竟然是dp?可是並查集多麼好寫好調啊。dp狀態的定義需要些技巧,否則會變得超級碼農。

二題思路來的也比較快。只要把spfa或dijkstra中的鬆弛操作變一下即可。

然後到三題就卡住了。上了個廁所回來決定打限制xi100的30分暴力。
但其實我的暴力思路是錯的。我以為限制100是因為100裡有25個質數,可以狀壓記錄每個質數的倍數或公倍數有多少個,然後變成一個高維字首和或容斥解決。
寫了寫發現這樣連暴力也做不了,於是考慮優化。我發現較大的質數是互斥的,並不會有他們的公倍數出現,這樣就造成了儲存與處理的巨大浪費,於是考慮用更高效的壓縮方式優化。
再一想,最高效地記錄一個數包含哪些質數的方式不就是它本身嗎?而題目值域為500000,那不就完全可以存下了。用容斥做,每次修改和查詢都是O(x)的,總複雜度O(mx),應該是正解。【這種暴力沒打出來結果想到了正解的劇情也太狗血了吧】

於是今天250。三題T了。。。WTF??? T_T

下午講題時ysy抽我來講50分做法,於是我愉快的講了容斥做法。——“這是正解啊。那你怎麼50分?”——我TM也想問啊!

回賓館調了一晚上,發現本機跑果然也T了。可是我的複雜度絕對沒有寫偽。
一怒之下直接註釋掉所有處理演算法來執行。震驚:printf200000個lld用了3秒鐘!!!那我又有什麼辦法呢?
直接把原始碼交到洛谷(團隊題)去測。AC…
為什麼只有這道題輸出會出鍋啊?printf也會掛這麼厲害啊?為什麼明明是正解程式碼,測評姬和本雞雙雙TLE啊?你給我個解釋啊。。。

下午ysy講數論。

  • Miller-Rabin素數檢驗與Pollard-rho合數分解(然而很少用)
  • 中國剩餘定理
  • 階:使得ax1(modp)的最小正整數x稱為ap的階,記為ordpa。即a的冪在模p意義下的不同取值個數。
  • 原根:ordpa=φ(p)時,稱ap的原根。即a0(φ(p)1)次冪恰好不重不漏地佔滿小於p且與p互質的所有φ(p)個數。
    有原根的數只有形如1,2,4,pk,2pk,其中p為奇素數,kN+
    原根個數為φ(φ(p))
  • 如果x2a(modp)有解,稱a為模p的二次剩餘,否則稱a為模p的二次非剩餘。
    質數p的二次剩餘與二次非剩餘個數相同。
    如何快速判斷a是否是p的二次剩餘?判斷ap121
  • 拉格朗日定理:若p為質數,f(x)為模p意義下的n(n>0)次多項式,那麼f(x)至多有n個模p不同餘的根。
    證明用數學歸納法:若f(x)有一個根x0,則可分解f(x)f(x0)=(xx0)g(x),其中g(x)n1次多項式。
  • 莫比烏斯反演(不想抄了)

晚上講的題還挺有意思的(好難啊)。get了一個線段樹技巧:

  1. 對於不太茲辭pushup的線段樹(比如維護區間凸包),要支援線上插入末尾和區間查詢:自下而上地建樹,當這一段填滿後才暴力(O(n))建出這一段。即左右兒子都有了而父親還不存在時就把父親建出來
  2. 如果還要支援刪除末尾,就不能刪除時暴力拆解,新增時暴力構建,這樣如果在一個點反覆橫跳的話就會T。做法是填滿一個塊後不立即構建當前塊,而是找當前層的前面一塊,如果前一塊沒有構建,就構建前面的塊,否則就什麼都不幹。這樣查詢時仍然會查到O(logn)個區間,並且如果要構建第i層的長度為2i的區間,至少要進行O(2i)次操作。
  3. 適用範圍:
    • 區間資訊無法

      相關推薦

      2017國慶集訓長沙划水

      Day 1 一題給出數軸上n個座標xi有權值wi,求由|xi−xj|≥wi+wj連邊構成的最大團。 這個式子長得太像兩圓相離或外切的表示了(連數軸都告訴你了呀),於是瞬間變成取最多不重區間的水題。。。 然而我居然忘了還有右端點排序後O(n)的簡單貪心,寫了

      2019集訓可持久化線段樹模型轉化D1T2Permutation

      目錄 題意 輸入格式 輸出格式 思路 程式碼 題意 給定一個長度為n的序列A[],你需要確定一個長度為n的排列P[],定義當前排列的值為: \[\sum_{i=1}^{n}{A[i]P[i]}\] 現在給定一個整數k,需要你求出,在所有可能的排列中(顯然有n!種),最小的k個"

      2019集訓最大費用流模型轉換D2T3 sum

      目錄 題意 輸入格式 輸出格式 思路 程式碼 題意 現在你有一個集合{1,2,3,...,n},要求你從中取出一些元素,使得這些元素兩兩互質。問你能夠取出的元素總和最多是多少? 輸入格式 一個整數n 輸出格式 一個整數表示能夠選出的最大的元素總和。 思路 這道題居然

      2019集訓第一類斯特林數NTT&多項式permutation

      目錄 題意 輸入格式 輸出格式 思路: 程式碼 題意 找有多少個長度為n的排列,使得從左往右數,有a個元素比之前的所有數字都大,從右往左數,有b個元素比之後的所有數字都大。 n<=2*10^5,a,b<=n 輸入格式 輸入三個整數n,a,b。 輸出格式 輸出

      2017杭二聯考 圖的有向環

      tor gist fin lin def clu pro script space P2555 - 【2017杭二聯考】圖的有向環 Description 題目背景: 幻想鄉的亡靈公主,西行寺幽幽子,在幻想鄉很受歡迎,經常有妖怪來拜訪她,但是幽 幽子並不喜歡被打擾

      BZOJ 48702017六省聯考組合數問題

      其實我剛看到題目跟大部分人的反應是一樣的,暴力Lucas定理。。。 後來發現沒說模數一定是質數,那沒事還是能騙好多分的。 然而事實上是那些暴力分根本用不到Lucas定理。。。 正解: 所求式子的

      HDU 6112 今夕何夕2017"百度之星"日期模擬計算基姆拉爾森計算公式蔡勒公式

      今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub

      #6030. 集訓 2017 Day1矩陣

      line 字符 oid inline 技術分享 任務 有一種 run -h #6030. 「雅禮集訓 2017 Day1」矩陣 題目描述 有一個 n×n 的矩

      刷題LOJ 6038 「集訓 2017 Day5」遠行

      tree 解密 putc for math temp 修改 c++ 生活 題目描述 Miranda 生活的城市有 \(N\) 個小鎮,一開始小鎮間沒有任何道路連接。隨著經濟發現,小鎮之間陸續建起了一些雙向的道路但是由於經濟不太發達,在建設過程中,會保證對於任意兩個小鎮,最多

      #6029. 集訓 2017 Day1市場

      1 #include <cctype> 2 #include <cstdio> 3 4 typedef long long LL; 5 6 const int MAXN=100010; 7 8 int n,m; 9 10 struct S

      長沙集訓2017.9.12

      print 一道 要求 esp 做出 cnblogs 多點 輸出 family 並不怎麽傻逼的題也把自己考成傻逼。大概是全機房最後幾個改完題的人了。。QAQ T1 APIO2009搶掠計劃 好像是之前哪位學長講過,tarjan縮點,然後值取反跑spfa或者拓撲排序後做Dp

      可持久化線段樹2019集訓 permutation

      題目: 分析: 比較噁心的一道題。 首先,將式子轉化一下,變成 ∑ A

      線段樹2019集訓 sequence

      題目: 給出k,和一個長度為n的序列A 有q次詢問, 每次詢問 A l

      Trie樹啟發式合併2019集訓 matrix

      題目: 定義一個矩陣的貢獻為:其互不相同的行的種類數。 給出一個矩陣,求其所有子矩陣的貢獻和。 分析: 可以把每一行拿出來,弄成一個字串,建一顆Trie樹出來。 此時,就可以算出以最左端為左邊界的所有子矩陣的貢獻。 算完後,把第一層節點合併,相當於去除了第一列的

      費用流求證明2019集訓 sum

      題目: 在不超過n的數中,選出一個集合,使得集合內部元素兩兩互質,且集合元素總和儘可能大。 分析: 神奇的性質題。 出題人不會證,問了一堆大佬也不會。 哈(那麼證明就留給讀者來完成) 性質是: 1、每個元素最多隻有兩個質因子。 2、若有兩個質因子,一定有一個大

      點分治FFT2019集訓 bracket

      題目: 分析: 太過套路這裡就簡單說說 顯然,當詢問數k很小時,就是個裸的點分治題。 現在k變大了。那就FFT算貢獻。 #include<cstdio> #include<cstring> #include<cmath> #in

      矩陣加速數學2019集訓 math

      題目: 簡單地說,就是對於n的每一個長度為m的劃分( k i

      loj6029 「集訓 2017 Day1」市場

      type string turn struct sta def for its loj 傳送門:https://loj.ac/problem/6029 【題解】 考慮如果有一些近似連續的段 比如 2 2 2 3 3 3,考慮在除3意義下,變成0 0 0 1 1 1,相當於整

      2017集訓 Day2

      nlogn 遞推 平面 重復 我們 矩形面積並 費用流 信息 新增 今日得分:60+100+25 = 185,修改後60+100+100 今日題解: T1:有nlogn對不合法的數對,這些數對在DFS序上的支配範圍畫在平面上是一個或兩個矩形,求矩形面積並即可 T2:遞推,考

      「6月集訓 2017 Day7」電報

      連通塊 print 要花 style view 最小 pre mes freopen 【題目大意】 有n個島嶼,第i個島嶼有有向發射站到第$p_i$個島嶼,改變到任意其他島嶼需要花費$c_i$的代價,求使得所有島嶼直接或間接聯通的最小代價。 $1 \leq n \leq 1