原创 BZOJ 4516: [Sdoi2016]生成魔咒

裸的SAM。。。。。。。 考察點是啥?SAM的複雜度是O(n)而不是O(n*sigma)? #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #in

原创 BZOJ 3168: [Heoi2013]鈣鐵鋅硒維生素

對着網上下的數據拍發現過不去,交上去就1A了。。。。。。 看discuss才發現標程是錯的。。。。。。。 根據14年的論文,A爲n維向量的一組基,B中任意行向量屬於Span(A),於是可以得出係數矩陣C,且C*A=B,A中行向量x能被B中

原创 BZOJ 2657: [Zjoi2012]旅遊(journey)

三角剖分轉對偶圖之後形成了樹,問題轉化爲求樹上最長鏈 證明見14年論文 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<map>

原创 BZOJ 4519: [Cqoi2016]不同的最小割

裸的最小割樹(分治最小割是啥,能喫嗎) 簡單的看了一下最小割樹的建樹方法 首先以1爲根建立星型(菊花)樹 然後對於2到n每個節點: 跑它(S)和它父親(T)的最小割 得出來的最小割即爲樹上該條邊的權值 然後找到比該節點編號大的節點,如果它

原创 BZOJ 4515: [Sdoi2016]遊戲

樹鏈剖分 將每次更新拆成若干條鏈上關於depth的一次函數 於是就變成了線段樹維護半平面交中x軸上一段區間的y最小值 考慮每個點代表一條覆蓋整個區間的直線,以此來進行標記永久化 若兩個標記,即兩條直線覆蓋了同一區間 Case 1:其中一個

原创 BZOJ 4520: [Cqoi2016]K遠點對

BZOJ AC 300 紀念!!! 做K次凸包,每次旋轉卡殼找到一對最遠點,刪掉他們並把他們構成的點對加入候選集合 於是候選集合的大小爲O(nk)的 總複雜度O(nklogn) (好像會T) #include<cstdio> #inclu

原创 BZOJ 4524: [Cqoi2016]僞光滑數

和D1的K遠點對類似的k優解求法 首先找到一個集合使得當前最優解一定在其中 然後每次找到最優解並把與它有關且(必定)劣於它的加到集合裏去 重複k-1次 對於這道題顯然一開始的集合就是pi^j,pi爲質數且pi<128,pi^j<=n 然後

原创 BZOJ 2229: [Zjoi2011]最小割

雙倍經驗! 建出最小割樹後暴力搞兩點間距離(瓶頸)神馬的 詢問的時候upper_bound一下就好了 <span style="font-size:18px;">#include<cstdio> #include<iostream> #i

原创 BZOJ 4522: [Cqoi2016]密鑰破解

數論模板大整合。。。。。。 快速乘+快速冪+擴展gcd+Pollard_Rho #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<

原创 BZOJ 3091: 城市旅行

link cut tree水題 將樹鏈看成序列,答案即爲sigma(a[i]*i*(n-i+1))/C(n+1,2),分母顯然不用維護,分子拆開來搞一搞就好了 (維護信息的link cut tree的標記必須即時生效TAT否則會WA) #

原创 BZOJ 4523: [Cqoi2016]路由表

還以爲要可持久化Trie 簡單分析一下發現就是Trie+單調棧 查詢的時候從根向下在Trie上走,每次找到當前節點上滿足條件的最小時間點加到棧裏去 棧中時間點爲遞增序 答案就是棧裏元素的數量 (lower_bound好慢啊,是不是可以直接

原创 BZOJ 4517: [Sdoi2016]排列計數

說好的省選題怎麼就輕易地變成CF難度了呢 答案顯然是C(n,m)*D(n-m),D(x)爲x個元素的錯排 由容斥原理可得D(n)=n!*sigma(k=0->n)(-1)^k/k! 線性預處理一下就可以O(1)回答詢問了 (竟然沒卡帶lo

原创 BZOJ 2160: 拉拉隊排練

雙倍經驗題 manacher/palindromic tree 對於manacher的話顯然迴文串的長度最多隻有n種,對於每個奇數長度的位置顯然長度爲1,3,5.....r[i]的串的個數都+1,區間加減什麼的差分一下前綴和搞一搞就好了

原创 BZOJ 4552: [Tjoi2016&Heoi2016]排序

BC #76 這題目好鏼啊! (我也不知道怎麼就滿足二分性了) #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<queue> #

原创 BZOJ 4551: [Tjoi2016&Heoi2016]樹

NOIP題? DFS序+永久化標記 10分鐘碼完。。。。。。。 #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<queue> #