7 29 簡單 大噓 DP

2022-05-30 17:24:08 字數 2446 閱讀 8021

有n個電線桿,第i個高度為h[i],在相鄰的電線桿之間造電線需要的價值是abs(h[i]-h[i-1]) * c.為一根電線桿增加x高度的代價是x²,最小化代價和

n <= 10^5,h[i],c[i] <= 100;

設f[i][j]表示

求有多少長度為n的排列,使得每個數要麼比旁邊兩個都大,要麼比旁邊兩個都小.

n <= 5000

f[i][j]表示長度為i,最後乙個數是j,且該排列p中p[i-1]>p[i]的合法方案數,g[i][j]表示長度為i,最後乙個數是j,且排列中p[i-1]有n個人參加比賽,第i個人說:有ai個人比我分數高,有bi個人比我分數低,可以有相同分數,問最多多少人說真話

n <= 100000

乙個人說真話代表ai+1搭配n-bi的人的分數都是一樣的.如果我們把它看成一段線段,那麼在這n條線段中,相交且不重合的線段一定不能同時成為真話.

所以問題就轉化為選出盡量多的不想交或完全重合的線段,

祖瑪,消掉的條件是個數》=k,給出初始局面,要求插入一些顏色的盡可能少的球,使得原始局面依次插入球后全部消掉 n <= 100

看起來就很像區間dp,f[l][r]表示將[l,r]消掉需要的最少球數.通常選擇[l,r]之間的k,先消掉[l,k],再消[k,r].但是因為消掉以後兩端會接在一起,所以普通的區間dp無法完成.

我們可以人為規定從左到右消掉序列.考慮一段區間的左邊第乙個數可能是怎麼消掉的.

人為直接加球消掉

後面的消掉以後這個球和後面的拼在一起消掉了

f[i][j][k]表示消掉[i,j],前面已經插入了k個和a[l]一樣的球的最小花費

轉移:f[l][r][k] = f[l][x][k] + f[x+1][r][0]

f[l][r][k] = f[l][r][k-1] + 1

f[l][r][k] = f[l+1][x-1][0] + f[x][r][k+1]

有乙個人在2 * n的網格上種蘑菇,(i,j)位置上每單位時間會增長v[i,j]的蘑菇.乙個人從(1,1),每單位時間移動乙個格仔,且訪問每個格仔一次且僅一次,求他最多採多少蘑菇

本題首先要注意的是經過每個點一次且僅一次.對於任意乙個字首,它的橫向走的步數應該少於縱向走的步數.

設f[i][0]表示按照"蛇形"走完了前i格,f[i][1]表示按照u形走完了前i格.

一開始有乙個全部都是0的長度為n的序列.

現在要對這個序列進行若干輪操作,每一輪你都要選擇這個序列的乙個權值相同的連續子串行,然後把除了第乙個和最後乙個之外的數全部+1.

在進行了操作後,這個序列的若干項遺失了.問有多少種填數方法,使得它是合法的.

1 <= n <= 10000, 1 <= h[i] <= 10000

考慮逆操作,選擇[l,r],將除了頭尾之外的都-1,要求-1後這一段權值相等.

求n個點(帶標號)的連通圖個數,答案對998244353取模

如果不要求連通(任意圖),那麼就是2^c(n,2)次.

可以通過減去不合法的來求出連通圖的個數.不合法就意味著圖被分成了若干塊.令f[n]表示大小為n的連通圖個數.則f[n] = 2c(n,2)-不連通圖個數(g[n]).如何求g[n]呢.考慮1號點所在連通塊大小為i,則剩下了n-i個點與這個塊不連通.這i個點內部連邊方案為f[i]種.i和n-i個點之間連邊方案為1,即不連邊.剩下的n-i個點則隨意連都不影響答案,那麼其連邊方案為2c(n-i,2)種.然而本題要求有編號,這i個點不一定是2到i號(提前已指定1號點的聯通塊大小為i).,因此還要乘上c(n-i,i-1).

求n個點(帶標號)的尤拉圖個數,答案對998244353取模.

※尤拉圖:連通的存在一條尤拉迴路的圖

容斥,先求出每個點度數都是偶數的圖的個數,然後再減去不連通的這種圖的個數.

先取出乙個點,剩下n-1個點內部隨便連的話將成為2^c(n-1,2).但是這其中將會有一些度數為奇數的點,這時候就將拿出來的1號點向那些點連邊.這時候1號點呢?一定是偶數度數.因為此時其他所有的點都是偶數度數,所以1不可能是奇數度數.設f[n]表示大小為n,尤拉圖的方案數.f[n] = 2[1]

-g[n].g[n]=σi from 1 to n-1,g[i] * (n - i - 1) * (n - i - 2) * c(

有n個小朋友在玩遊戲.有乙個環,環上有2^m個位置,標號從0開始.

這n個小朋友每個人在時刻0在某個位置上,每隔一秒,他們都會順時針往下移動一位.即如果原來在位置x,下一秒會在位置(x+1)%2^m.

問,在[1,t]這些時刻裡,有多少個時刻他們的位置編號的異或和為s?

n <= 10^5,m <= 50,t <= 10^16,s <= 2^m.

假設t=2^m - 1,f[i][j]表示已經確定了t的後i位,有j個數進製了(由此可知有哪些僅為了,因為進製的一定是%2^m的前j位)的方案數.列舉t的第i位是0還是1,就可以知道每個數在這一位是什麼,檢驗一下xor起來是不是s的這一位,是就合法,否則不合法....████████████████[資料刪除]

(n-1) * (n-2) / 2 ↩︎

杭電1003(大數)簡單的DP簡單過

此題名字是大數,其實不用long int 也是可以ac的,不過用了還是好些,畢竟大賽中測試資料還是比較好的,這是個典型的dp類的最大子串行題。這道題影藏了很多細節,好多人的 和杭電的大神貼出來的參考 都是一樣的,但是就是不給ac,這種情況很多,關鍵是很多時候要考慮邊界情況,因為杭電的測試中很多組資料...

簡單dp 目錄

hdu1231 最大連續子串行 hdu1003 和上題一樣 hdu1087 最大遞增子串行和 不一定連續 hdu1257 最長遞增子串行長度 不一定連續 hdu1422 最長非負連續子串行 hdu1300 用 高的珍珠代替 低的,求最小珠寶花費 hdu1506 n個等寬不等高矩形依次放,求覆蓋的最大...

dp專題 簡單基礎dp 揹包

按照這個做的 hdu 1864 最大報銷額 01揹包 方法一 double型別的揹包 總數30個 每個最大1000 保留2位有效位。直接把double 100轉換為int型的揹包 看清題目 double型的01揹包 include include include using namespace st...