原创 k叉哈夫曼樹 - NOI2015荷馬史詩

Analysis k叉哈夫曼樹解析 這道題稍微還需要注意一點的就是最後還要求最長長度最短 這個其實就是在面對兩個權值相同的情況下,優先合併深度較小的點 Code #include<bits/stdc++.h> #define r

原创 Diary Ⅲ

每週開一篇,這安排不錯 上個星期還是沒有達到想要的狀態,還是有很多遺漏的沒有處理。 可是人確實是會累的,不能否認這一點,我們應當保證效率地學習,而不是用無效的努力麻痹自己,讓自己沉浸在一種自我感動的錯覺中。 繼續上週未完成的任

原创 並查集刪除點 - Junk-Mail Filter(HDU2473)

傳送門 Analysis 最粗暴的想法: 刪除一個點,就將這個點的father設爲自己 顯然,錯誤 因爲與這個點相連的其他點的父親仍然沒變 比如1,2,3的父親都是1,現在刪除1,1的父親還是1,2,3也是1,集合還是1個,正確

原创 淺談斜率優化dp

斜率優化dp的本質還是dp 只是轉移耗時太大,我們需要根據其轉移方程優化 兩種常見的計算斜率的方法: 1.作差比較法 舉個例子 當前我們的dp轉移方程爲:(最後求f[n]f[n]f[n]的最小值) f[i]=f[j]+(sumt[

原创 掃描線+線段樹 - SOJ#999 紀念碑

傳送門 Analysis 將每個矩形(x1,y1,x2,y2)(x1,y1,x2,y2)(x1,y1,x2,y2)拆成兩條線段(x1,y1,y2)(x1,y1,y2)(x1,y1,y2) (x2,y1,y2)(x2,y1,y2)

原创 字符串dp - WOJ#1223 子串

傳送門 Analysis 首先這個名字“字符串dp”就是我亂取的……反正在字符串上搞嘛 第二次做,在知道這是dp的情況下,依舊沒有分析出來。。在大致瞥了一眼定義後,仍舊沒有轉移對。菜是十大原罪之首 考慮兩個字符串 一般都需要

原创 CSP-S賽前專題總結

圖論 最短路 生成樹 強連通 差分約束 拓撲排序 歐拉圖 最短路 1.建模: 將原問題轉化通過某種性質轉化爲圖論問題 注意: 建圖的時候是否可以優化(是否加了一些對答案無影響的邊) 和某些特定數量的點有關,考慮枚舉。(

原创 分塊+打表 - WOJ#1198 數數

傳送門 Analysis 什麼?數位dp? 亂說……(反正我沒推出來) 每一百萬爲一組,打表求出來 剩下的部分,暴力計算即可 在計算的時候可以做到O(數字長度)統計 因爲位數之和的一半最多爲9*9/2=40.5 我們考慮壓位,二

原创 NOIP2013華容道

Analysis 拿到題後首選搜索 然後人家暴力都是七八十 我只有5分??? 不知道哪裏dfs掛了 至於一開始想到的bfs 因爲害怕死循環而不知道怎麼打標記所以棄了 翻了神仙的題解後,才意識到 bfs有個重要的性質,第一次訪問到的

原创 單調隊列優化dp - WOJ#2735 跳房子

傳送門 Analysis 當年考NOIP普及組的時候,還不會dp 考場上看到這道題,直接果斷棄 時隔兩年,我終於能看懂題了/笑 顯然是一個二分+dp判斷合法 定義f[i]f[i]f[i]表示到達i這個位置可以獲得的最多分數 顯然

原创 Diary Ⅱ

上一篇博客太長了,重新開一篇 待解決: 1.圖論的總結 2.區間dp和樹形dp 3.斜率優化dp 4.二次元冒險的最短路做法+複雜度分析 2019/10/22 上午考試 中午+下午改題 晚上聯賽真題 (如果任務完成了,晚上回家

原创 (巧妙轉化)歐拉回路 - Mike and Fish(CF547D )

傳送門 Analysis 有點妙嘞。好題👏 每一行,每一列分別看作一個點 同一個點的行列相連邊 顯然會得到一個二分圖 而對於染色操作,等價於給每條邊定向 最後要求滿足每個點的出入度之差<=1 (是不是和今天這道考試題WOJ#47

原创 記憶化搜索 + 貪心 - WOJ#1838 引水入城

傳送門 Analysis 這道題的關鍵之處就在於一個很重要的結論: 每個蓄水廠在最底層能覆蓋的一定是一個連續的區間 有了這個性質後,我們就可以記憶化搜索得到每個蓄水廠能覆蓋的最左端點和最右端點,然後貪心進行最少線段覆蓋即可 至於

原创 費馬小定理+插板法 - Sum(HDU4704)

傳送門 Analysis 絕對是題目描述的問題 注意: 在這道題中1+1+2=41+1+2=41+1+2=4 和 1+2+1=41+2+1=41+2+1=4是兩種不同的方案 但2+2=42+2=42+2=4和2+2=42+2=4

原创 快速計算n!中素因子的個數

Learning 我們來一個樣例說明一下: 1 2 3 4 5 6 7 8 我們求得在8!中2的個數  1 1  1   首先我們先計算出2的倍數的個數:8/2=4    1  1   其次我們計算出4的倍數的個數: 8/4=2