LibreOJ 516 DP 一般看規律

2022-03-07 04:48:23 字數 588 閱讀 1545

首先對於序列上一點,它對答案的貢獻只有與它的前驅和後驅(前提顏色相同)構成的點對,

於是想到用set維護每個顏色,修改操作就是將2個set暴力合併(小的向大的合併),每次插入時更新答案即可

顏色數要離散化,或者用map也行

#include #include #include #define n 100010

using namespace std;

int n,m,ans=2147483647;

map> a;

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}void upd(int c,int p)

int main()

for(;m--;)//考慮特殊情況

if(a[x].size()>a[y].size()) swap(a[x],a[y]);

for(int it:a[x]) upd(y,it);

a[x].clear();//合併後應清空

printf("%d\n",ans);

} return 0;

}

樹形DP一般解題思路

注意先求下屬,再求上司。利用鏈式前向星儲存樹 p1352 沒有上司的舞會 include using namespace std const int maxn 6e3 10 int n,r maxn head maxn int cnt 邊的編號 int d maxn 統計編號節點父節點的個數 int...

01揹包(一般dp實現 樹形dp實現)

一般dp,要遍歷完整個二維陣列。include include using namespace std int dp 10000 10000 int w 10000 v 10000 bool chosen 10000 10000 intmain for int i 1 i m i else else...

從一般管理原則看微軟的重組

事先宣告 想對微軟這樣乙個龐大的公司做出周到客觀的評價其實很難,我只評價我看到的,也只保證邏輯通暢。微軟近來重組了,有人看好,有人看衰,我這裡用一般管理原則看一下這次重組,目標不是說微軟,而是說管理原則,借下微軟的勢而已。管理中第一原則當是實事求是,形象講就是採取的措施和待解決的問題要有直接關聯。而...