原创 Bzoj4540:[Hnoi2016]序列:莫隊+RMQ

題目鏈接4540:[Hnoi2016]序列 考慮莫隊算法,在移動一個端點的時候,假設要處理的區間爲[l,r]切向左擴大區間,最小值所在位置爲k,那麼a[k]的貢獻爲(r-k+1)*a[k],即[k,r]的新增序列都以a[k]爲最小值 還有

原创 Bzoj3190:[JLOI2013]賽車:半平面交

題目鏈接:[JLOI2013]賽車 對每個賽車列出他的x-t函數畫在二維座標系中,發現其實就是水平可見直線那道題了 我們將函數按照第一維v從小到大,第二維起始位置從大到小排序,然後對於有序的三發函數a,b,c,如果b,c的交點在a,b的左

原创 Bzoj2626:JZPFAR:K-D-Tree

題目鏈接:JZPFAR K-D_Tree複習,直接忘記了寫point的比較函數導致nth_element出錯調了好久QAQ #include<queue> #include<cstdio> #include<cstdlib> #incl

原创 Bzoj1061:[Noi2008]志願者招募:單純形算法

題目鏈接1061:[Noi2008]志願者招募 線性規劃的裸題,然而蒟蒻並不會,放個代碼慢慢研究QAQ 看線性規劃的資料的話可以去找那個《線性規劃與單純形算法》 這裏有個算法的模擬,可以加深理解 #include<queue> #incl

原创 Bzoj4538:[Hnoi2016]網絡:整體二分+樹狀數組

題目鏈接:4538:[Hnoi2016]網絡 整體二分,用dfs序+樹狀數組判斷當前答案是否可行 對於一段區間[l,r],我們二分得到的答案爲mid,我們把[l,r]中大於mid的數據交互請求加入樹狀數組,同時也有撤銷操作的刪除 這樣知道

原创 Bzoj3545:[ONTAK2010]Peaks:Splay啓發式合併

題目鏈接:[ONTAK2010]Peaks 離線,將邊按照邊權從小到大排序,詢問按照x從小到大排序 對於每個詢問,將邊權小於他的x的邊加入圖中,用splay維護每個聯通塊的權值,查找第k大即可 加入一條邊時會合並聯通塊,這個用Splay的

原创 Bzoj2839:集合計數:組合數學+容斥

題目鏈接:集合計數 答案是含有至少k個的-至少k+1個的+至少k+2個的…… 從n個數中選出k個作爲交集中的數,是C(n,k),這樣的集合共有2^(2^(n-k))-1個 2^(n-k)是包含選定的k個數的可選集合的數量,選取方案有2^(

原创 Bzoj3551:[ONTAK2010]Peaks加強版:Kruskal+主席樹

題目鏈接:[ONTAK2010]Peaks加強版 做一遍Kruscal,對於要合併聯通塊的兩個點x,y新建節點z令fa[x]=fa[y]=z,並且節點z的權值爲這條邊的邊權 那麼我們對於一個詢問<v,x,k>只需要倍增出最後一個權值>x的

原创 Bzoj2178:圓的面積並:Simpson積分

題目鏈接:2178:圓的面積並 Simpson積分裸上即可Ac,精度必須開到1e-13,1e-12都會wa 貌似有高大上的做法但是不會 Simpson真是慢死了QAQ 這篇博文用來學習Simpson很好 #include<cmath> #

原创 Bzoj1823:[JSOI2010]滿漢全席:2-sat

題目連接:1823:[JSOI2010]滿漢全席 2-sat首題! 2-sat的圖中每一條邊<i,j>表示選了i必須選j 拆點,一個表示選一個表示不選,跑tarjan,如果有一個點拆成的兩個點在一個聯通分量裏就是BAD #include

原创 旅の途中

[00:01.00]旅の途中[00:27.92]ただひとり (孤身一人)[00:30.01]迷(まよ)い込(こ)む (迷失於)[00:32.66]旅(たび)の中(なか)で(旅途之中)[00:36.21]心(こころ)だけ(唯有心靈)[00:

原创 Bzoj3509:[CodeChef] COUNTARI:分塊+FFT

題目鏈接:3509:[CodeChef] COUNTARI 題目要求求出(i,j,k)的對數滿足i<j<k且a[j]-a[i]=a[k]-a[j] 式子變形得到a[j]*2=a[i]+a[k]; 考慮對於每個a[j]求出左邊的i和右邊的k

原创 HEOI2016遊記

無論是省選之前還是出完成績的現在,一切都是那麼迷茫…… 自己那麼弱,考得那麼渣,居然能進隊? 4.22: 啓程的一天。 從學校出發顯然不能帶任何電子設備,於是花了一上午整理了100+篇複習資料,很鬼畜的樣子,反正打印到最後打印機罷工了QA

原创 Bzoj1801:[Ahoi2009]chess 中國象棋:dp

題目鏈接:[Ahoi2009]chess 中國象棋 設dp[i][j][k]表示前i行中有j列有1個炮,k列有2個炮,分情況討論轉移即可 注意一行最多兩個炮 #include<cstdio> #include<cstdlib> #inc

原创 Bzoj3782:上學路線:組合數學+Lucas+CRT+DP

題目鏈接:上學路線 設dp[i]爲到了第i個壞點且是第一次到達壞點的方案數 那麼dp[i]=C(x[i]+y[i],x[i])-∑C(x[i]+y[i]-x[j]-y[j],x[i]-x[j])dp[j](x[j]<=x[i]&&y[j]