原创 bzoj1913: [Apio2010]signaling 信號覆蓋

傳送門 我們發現凸四邊形貢獻爲2,凹四邊形貢獻爲1 而且四邊形總個數=C(n,4) 所以我們只要知道凹四邊形的個數就可以了 我們枚舉在凹四邊形中內角大於180的點 然後我們將其他點按照極角序排序 枚舉極角差剛剛不小於π

原创 bzoj1905: Soldier 士兵控制的棋盤

傳送門 首先我們大力轉換座標系。 然後我們做一遍掃描線求出矩形面積的交。 然後我們減去在外面的部分,可以發現一定是等腰三角形 在搞一個面積並就可以了 時間複雜度O(NlogN) #include<cmath> #incl

原创 bzoj1895: Pku3580 supermemo

傳送門 發現題目中的所有東西都可以用splay維護 然後就理所應當的成了splay裸題了。 #include<iostream> #include<cstdio> #include<algorithm> #include<cs

原创 bzoj1923: [Sdoi2010]外星千足蟲

傳送門 返現答案給出的是一些xor和的條件 這個顯然可以用高斯消元做 加上bitset優化可以做到O(MN^2/w) #include<cmath> #include<cstdio> #include<cstring> #i

原创 多項式exp的正確姿勢

大概講述一下O(nlog⁡2nlog⁡log⁡n)O(\frac{n\log^2 n}{\log \log n})O(loglognnlog2n​)多項式exp的正確姿勢。 首先設我們要求eA(x)=B(x)e^{A(x)}=B(

原创 loj 6725 題解

題目鏈接 看到題面裏的max⁡ai>=ax,i<xi\max_{a_i>=a_x,i<x} imaxai​>=ax​,i<x​i和min⁡ai>ax,i>xi\min_{a_i>a_x,i>x} iminai​>ax​,i>x​i

原创 bzoj1939: [Croatian2010] Zuma

傳送門 看英文題解的辣。上圖: 翻譯過來是: f[i][j][k]表示消除第i個到第j個珠子,且第i個珠子前面有k個同色珠子的最優解。 有三種轉移: 1.插入一個:f[i][j][k]=f[i][j][k-1]+

原创 NOI2017醬油記(僞)

好吧其實是因爲菜沒拿到名額纔去打同步賽的。 day1: 拿到題面: 1.不存在的 2.tan 90° 3.辣雞吉利 臥槽,全是假題。 此時SKYDEC在裙上說第三道用dp騙分。 於是我就愉快的擼了一個小時擼出來了。

原创 傳遞閉包的正確姿勢

就是給你一個有向圖,詢問所有點對之間的可達性。 直接floyed的複雜度爲O(n3w)O(\frac{n^3}{w})O(wn3​)。 同時由於floyed的枚舉有後繼性,因此不能使用4毛子優化 考慮先縮掉SCC,使得圖變爲一個D

原创 loj 3120 黑科技做法

牛逼的杜ls在CF上面發了一個生成函數黑科技。 設k=n−2mk=n-2mk=n−2m,並且略去若干種邊界情況。 將答案寫成生成函數形式,形如:n!2D[xn]∑i=0k(Di)(ex−e−x)i(ex+e−x)D−i\frac{

原创 JOISC2020題解

等到晚上應該可以更新當日題解。 D1T1 設DP狀態f[i][0/1][j]f[i][0/1][j]f[i][0/1][j]表示前iii個數字,總共有jjj個選擇了A,上一個選擇了A/B是否合法,直接暴力複雜度O(n2)O(n^2

原创 bzoj1912: [Apio2010]patrol 巡邏

傳送門 k=0顯然每條邊都要走兩次,答案=(n-1)*2 k=1我們找到樹上最長鏈,在兩段連邊 在環上的就不用再走一遍了 答案=(n-1)-鏈長+1 k=2在k=1的基礎上將那些邊編圈變爲-1,再跑最

原创 bzoj1922: [Sdoi2010]大陸爭霸

傳送門 我們假設d1[i]表示機器人到達i的最短時間 d2[i]爲結界消失的最短時間 則一個點可以被訪問到的最短時間爲max(d1[i],d2[i]) 我們跑一遍最短路 等到該節點滿足條件就向外擴展 #include<i

原创 bzoj1932: [Shoi2007]Setstack 集合堆棧機

傳送門 大力哈希亂搞。 每次操作產生的新的set我們判斷之前有沒有出現過 每次大力插入就可以了。 至於判斷交集並集,我們大力使用stl中的函數 algorithm裏封裝了兩個函數是set_union和set_inters

原创 bzoj1926: [Sdoi2010]粟粟的書架

傳送門 對於第一問(R,C<=200); 預處理f[x][y][k],s[x][y][k].表示從(1,1)到(x,y)中大於等於k的數的和與大於等於k的數的個數。 然後二分最小的數即可。 對於第二問(R=1): 我們還