bzoj1564 NOI2009 二叉查詢樹

2022-04-29 21:51:16 字數 696 閱讀 8969

首先先說明乙個坑點,這裡說數不能重複,但是數又可以取全體實數,而且修改代價又和數沒有關係,那麼我們其實可以直接看成整數的。。。

然後我們是知道中序遍歷的:)

所以我們可以區間dp一下,設f[i][j][k]表示i~j建成一棵子樹,根的大小大於(否則值不變的時候只會影響1個點,答案沒有單調性求值複雜,還要多乙個n的複雜度)等於k的方案數

#include#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;int

n,k;

struct nodea[110];int lslen,ls[110];ll sv[110

];bool cmp(node n1,node n2)

ll f[

110][110][110

];ll dfs(

int l,int r,int

d) f[l][r][d]+=(sv[r]-sv[l-1

]);

return

f[l][r][d];

}int

main()

NOI2009 bzoj1562 變換序列

可以把距離看成每個點都有兩個匹配點,這樣就是求字典序最小的二分圖匹配。先任意求出乙個,然後從小到大考慮每個點,嘗試更換他的匹配點,但是要求不能改動之前的匹配。include include using namespace std const int maxn 10010 int a maxn fir...

BZOJ1562 NOI2009 變換序列

1 題意 題意有些難理解 2 分析 我們發現如果要求判斷是否合法的話就so easy了,二分圖匹配即可,但是我們發現要求輸出字典序最小的,那麼我們在匈牙利的時候就倒著列舉,另外鄰接表中的邊一定要排好序,如果用的是鍊錶的話,就從大到小,vector就從小到大插入,然後我們就可以保證字典序最小了,想了半...

bzoj1562 Noi2009 變換序列

題意 給乙個序列di表示min i ti n i ti 求乙個字典序最小的序列ti sol 對於每個i,能和它連邊的只有i di和 i di n n 將圖轉為二分圖,左邊為i,右邊為ti,跑匈牙利演算法 為避免陣列下標越界 memset 1之類麻煩的問題,右移一位處理 p.s.行末不能有空格,文末有...