原创 開車旅行

大概的思路就是用鏈表預處理一下,然後用倍增。 鏈表是因爲:我們每次增減的都是周圍的幾個數。 倍增是因爲:每一次之後的數都是固定的,就是惟一的數指向惟一的數。 #include <bits/stdc++.h> using namespa

原创 校內模擬-變形lcs

emmmm a,b2個字符串,a串<=1e6,b串<=1e3,求他們的lcs。 那時間複雜度顯然是有一些問題的。。。但是我們會發現lcs一定是<=1e3的,所以用f[i][j]表示b的前i個裏面lcs長度是j。 f[i][j]就可以用我們

原创 mobile service:滾動數組的使用

……並不是什麼非常難的題目。 1.f[i][x][y][z]表示在第i輪,三個人分別在x,y,z的最小代價。 2.然而我們經過思考發現這樣設計狀態不是很好。在第i輪,一定有一個售貨員在s[i]的位置,而且我們並不需要知道這三個人分別在哪個

原创 poj1722:substract

這個題其實可以轉化成在一些數字之間插上加號或者減號,然後等式的計算結果是t,求方案的一個題。其中第一個數和第二個數的符號是固定的:+,- f[i][j]表示前i個數的運算結果是j時,第i個數前面的符號。所以如果存在f[i][j-a[i]]

原创 TRIP-LCS方案輸出

首先肯定是要求lcs的,這個我懶得講了。。。 因爲lcs最多就是這個串的長度,所以我們可以考慮dfs。我們開2個數組,f1[i][j]表示在a串中,f2[i][j]表示在b串中,i之後的第一個‘a’+j在什麼地方。 #include <

原创 環狀最大兩段子段和

https://www.luogu.org/problem/P1121 這個題非常有意思。有2種情況,一種是不用首尾相連的方法,另一種是要首尾相連的。首先考慮第一種,應該還是挺好寫的吧。。。就是直接算一下。用f[i]表示以第一個數開頭到i

原创 花店櫥窗佈置

題目鏈接:https://www.luogu.org/problem/P1854 因爲花瓶和花束的相對順序都是固定的,所以用f[i][j]表示前i個花瓶裏面放前j束花最大利益。對於第j朵花來說,他可以放到位置從i-j都是ok的。所以我們可

原创 codeforces-235B-play osu (期望dp)

首先我們不可能把所有的可能情況一個個列舉然後計算期望,很不現實。我們可以嘗試從頭到尾枚舉,計算1-n位置期望的貢獻。 因爲貢獻是連續的一段的平方,很不好處理,我們儘量變成線性的結構。我們發現,n*n=1+3+5+...+(2*n+1)。所

原创 樹上差分:松鼠的新家+最大流usaco+運輸計劃

2中樹上差分:邊拆分和點差分 邊差分:對於x,y之間所有的路徑都加上c,相當於把這條路徑拆成2條路徑:一條從x到lca,另一條從lca到y,注意因爲是邊的差分,所以這2條路徑是沒有重疊的。 即c[x]++,c[y]++,c[lca(x,y

原创 憤怒的小鳥-狀壓dp

題目鏈接: https://www.luogu.org/problem/P2831 搜索待寫 對於狀壓dp,f[s]表示只要一維表示殺死的豬豬的集合爲s的情況下需要的最小代價。對於每一個豬豬,他所被殺死的那個拋物線即可以是隻殺死了他自己(

原创 Noip模擬賽-C(一道環套樹的神奇題目)

題目鏈接:http://noi.ac/problem/694 前置知識:一個聯通圖沒有有偶環=它是環套樹或者樹=仙人掌=沒有2個環共用相鄰的邊(over) 爲啥呢:因爲若是2個環有相鄰的邊,那麼就存在一個大環的邊數=奇+奇-2*重複的邊,

原创 樹形dp:刷油漆

用f[x][y]表示以x爲根的數裏,選了y個的最大值。 然後樹形dp 是一個揹包啦 我們dfs每一個x,對於每一個x,枚舉他的兒子們, 再一個個枚舉y。 然後再一個個枚舉他的兒子取了幾個(k) 記得要存一下g!!!不然你更新的時候會出點問

原创 NOIP模擬賽-糖果公園

題目鏈接:http://noi.ac/contest/227/problem/678 #新理解: 並查集的本質是一棵樹 忽然感覺非常巧妙啊。。。 強制在線,分爲加邊和求最早聯通2個操作 對於操作1,按秩合併,將深度小的子樹鏈接到深度大的子

原创 lca的題

1.lca模板 洛谷P3379                 https://www.luogu.org/problem/P3379 2.How far away HDU:2586         http://acm.hdu.edu.

原创 noip模擬賽10B

題目鏈接:http://noi.ac/problem/702 題意就是每次只能刪去葉子節點,有多少種刪除方法。對於以x爲根一棵樹來說,如果我們想要得到這個樹的根,我們必須要刪去這個樹所有的子孫。設f[x]爲以x爲根刪除的方案數,那麼考慮他