Time of Update: 2018-12-03
http://www.lydsy.com/JudgeOnline/problem.php?id=1861寫好關鍵的三個函數後就是水水的類比題,旋轉來旋轉去的操作,so easy有幾點值得注意:1:取出Splay中某個節點,然後在插回去,這個節點的左右兒子要記得清空2:每次更改關係後別忘了up上去沒了。。#include <cstdio>#include <cstring>#include <queue>#include
Time of Update: 2018-12-03
B題題目看錯導致暈了老半天D題:從左往右 找到 l 和 r的二進位表示中的第一對 0 1, http://codeforces.com/contest/276/submission/3190755 。。。011111。。。100000。。。111111省略符號表示的數位都相同,容易看出不會有其他答案比這個值更大,如果有,則前面還有上面1 與 下面
Time of Update: 2018-12-03
手賤,輸出的時候沒pushdown。。。。。就是簡單的區間翻轉。。期末來了,總是淡淡的憂傷,沒辦法,只能找水題做了#include <cstdio>#include <cstring>#include <queue>#include <stack>#include <vector>#include <set>#include <algorithm>using namespace std;typedef long
Time of Update: 2018-12-03
http://poj.org/problem?id=3468寫完後發現用指標的速度比數組快了一秒。。。。。等有空把那個維修數列也寫一寫試一下,不知道能跑多快貼一下一個下午的成果吧,總感覺代碼量上還可以精簡,,,,求路過的神牛指導啊#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long lld;#define L
Time of Update: 2018-12-03
以前寫過一個證明,直接貼過來吧主要是利用了反證法:假設 s-t這條路徑為樹的直徑,或者稱為樹上的最長路現有結論,從任意一點u出發搜到的最遠的點一定是s、t中的一點,然後在從這個最遠點開始搜,就可以搜到另一個最長路的端點,即用兩遍廣搜就可以找出樹的最長路證明:1 設u為s-t路徑上的一點,結論顯然成立,否則設搜到的最遠點為T則dis(u,T) >dis(u,s) 且 dis(u,T)>dis(u,t) 則最長路不是s-t了,與假設矛盾2
Time of Update: 2018-12-03
題目連結給你一棵樹,讓你切斷一些邊,使得剩下的每個連通塊的點的個數的乘積最大,輸出這個乘積。n <= 700首先,答案肯定要用高精度儲存。。。。可以貪心,也可以背包。隨便畫一畫可以發現剩下的連通塊中,不會有某塊包含長度>=3的路徑,因為可以找到中間的那條邊切斷,使得這個路徑分成兩段a 和 b (a>=2 ,b >=2), a*b>=a+b根據這個推論 , 可以分三種情況1:以u為根
Time of Update: 2018-12-03
A:求出對於每堆箱子滿足條件的最大的那個就好了,因為對於兩個“大箱子” A B,裡面各自都嵌套了很多相同的小箱子,體積小的那一個必然可以放進體積大的那一個(2^k),體積相等時也可以合并為1個,因為題目保證每種箱子都是不一樣大小,所以A 或
Time of Update: 2018-12-03
250 , 500 比較簡單,搞完後就開搞 1000發現1000pt是個類似於樹形DP的計數題,問你從一棵50個節點的樹中選取若干個點的總方案數,這若干個點必須是連通的dp[i][j]代表以i為根的子樹,連著j個點的方案數,然後就寫兩個迴圈做個背包就ok了ps:寫完三題剩半個小時,想構造點資料準備X人,但題目太簡單,無從下手,最後我們房間非常和諧,沒有發生X人事件rank 8 留念
Time of Update: 2018-12-03
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26976純屬無聊,練手用的,線段樹套平衡樹常數太大逾時了,改成樹狀數組套平衡樹就AC了。。。。其實感覺如果是100000次操作,座標的範圍都是100000,那二維線段樹或者二維樹狀數組就搞不定了吧,空間開不下,只能離散化掉一維,然後將另一維插入平衡樹。套了平衡樹之後有個好處就是省空間。。。#include<cstdio>#include<cstring>
Time of Update: 2018-12-03
Div2 A : 水題Div2 B: 把每一個數都變成1,所需要的步數就是這個數的f值(奇數減一,偶數除以2)Div1 A: 記錄當前最高的高度即可DIV1 B: SB題 , 會有很多個點的x座標相同,但有可能有一些重點,所以要乘上cnt! / (2^c),由於總的cnt加起來不超過100000,所以,每次暴力算也可以。我開始還在想有沒有什麼模數的技巧。。。。。DIV1 C:好像是原題,給你一幅圖,每個點的度數不超過三,要你把點分成兩組,使得每組中不存在某個點有
Time of Update: 2018-12-03
運算式資料http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm學過編譯原理的話對這種運算式怎麼算還是小兒科的吧但是,手算會算,不代表代碼可以寫的好。。。。這種題沒怎麼寫,調試了n久SGU 182/*運算式計算,我用的是棧版本 狀態壓縮枚舉每個字母是0或1,判斷原來運算式的值是否為true ,
Time of Update: 2018-12-03
先大概對總的輪廓做個小結,邀請賽回來詳細寫寫。1:準系統:多模式比對2:和各種演算法結合{ 結合1:DP { 普通DP,求一個經過xxx最優值什麼的 輸出路徑什麼的,稍微有些繁瑣,要仔細點。 summary : 這類DP比較簡單,純屬穿了件AC自動機的馬甲的水DP } 結合2:
Time of Update: 2018-12-03
4 41 61 33 62 41 2 01 3 12 4 21 6
Time of Update: 2018-12-03
省賽先說省賽,這次省賽作為耀哥的謝幕戰,總算也拿了塊金牌作為送別耀哥的禮物,不過由於要趕去參加邀請賽沒能參加頒獎典禮實在是可惜啊,因為每年的頒獎總是最歡樂的一部分,下面進入正題。熱身賽:rank 1,感覺會損RP的。。。正賽: 開場我看了A B
Time of Update: 2018-12-03
http://www.lydsy.com/JudgeOnline/problem.php?id=2599題意:給一棵樹,每條邊有權.求一條路徑,權值和等於K,且邊的數量最小. (我會告訴你這就是題面?)BZOJ的題就是好啊!一句話題意,贊一個。這道題的思路還是點分治
Time of Update: 2018-12-03
這個題實際上預先處理出兩個數組就好了,st[i]表示i位置往左最遠能延伸到哪裡,【st[i],i】為不重複子串那麼在詢問一段區間內最長的不重複子串是多長的時候有兩種情況 , 對於L R區間內所有的【st[i] , i】,有一部分st[i]是<L的,所以這一部分的值變成了(i - L +
Time of Update: 2018-12-03
跟poj
Time of Update: 2018-12-03
給你一個字串,問你最少通過幾次拼接可以拼成這個串,每次拼接只能拼接兩個迴文串,可以重疊。思路:先求出以每個點為對稱軸的所有的最長迴文子串代表的區間,本來要考慮是迴文串是奇數還是偶數的,不過 Mancher演算法很好的解決了這個問題。。。。接下來就是選取最少的區間覆蓋整個區間,然後就是赤裸裸的區間覆蓋問題了,用個貪心就可以了:維護一個當前覆蓋到的最遠的距離now_end,那麼接下來要選的線段應該是左端點在now_end的左邊,右端點在now_end的右邊,且儘可能遠的向右延伸。。。。Mancher
Time of Update: 2018-12-03
題目連結E題:大概能想到貪心,但細想不下去,最後問了別人,好像也沒有什麼嚴謹的證明。。。首先,儘可能湊出大的數字,m-1,m-2,,,,,,,話說是因為如果上下兩個數字互為最優的匹配,那麼必選這個匹配,因為如果不選這個會使得總答案變小然後每次就根據這個原則去選取就好了。。。看下那些AC的代碼就知道了,這題主要是考想法,,,怎麼證明。然後根據上面那個結論,可以用一個奇葩的用平衡樹來做的方法,就是不斷的找最優匹配直到上下兩個數互為最優匹配用splay寫了一發,可不知怎麼TLE
Time of Update: 2018-12-03
題目連結B題:事實證明是sb題,而且證明自己比題目還傻。。C題:設dp[i]表示當前以數字i結尾的所有合法子序列乘積的總和(非遞減),那麼新插進來一個數K的時候,我們要更新dp[K],dp[K] =( dp[0] + dp[1] + dp[2] +... + dp[K] ) * K - dp[K]; 所以要用到個東東動態統計首碼和比如1 2 3 3插入最後一個3的時候,前面有這麼寫東西(1) (2)(3)(1 2)(1 3) (2