51nod 1526 分配筆名

2021-07-28 12:22:18 字數 651 閱讀 6446

傳送門

trie樹。

首先建立trie樹,如果是名字,打標記+1,如果是筆名,打標記-1

然後做貪心爆搜,如果當前節點標記之和與兒子節點標記之和不同,則貪心選擇min乘上depth,答案一定是最優的。

資料有一組要深搜80萬層,要加特判。

#include

#include

#include

#include

#include

#include

#define n 800005

using

namespace

std;

int c[n][26],tag[n],dep[n],n,len,ans,cnt;

char s[n];

void dfs(int x)

for (int i=0;i<26;i++)

if (c[x][i])

}int main()

tag[x]++;

}for (int i=1;i<=n;i++)

if (tag[x]>0) ans+=dep[x];

tag[x]--;

}dfs(0);

printf("%d",ans);

}

51nod 1526 分配筆名(字典樹 貪心)

題意 班裡有n個同學。老師為他們選了n個筆名。現在要把這些筆名分配給每乙個同學,每乙個同學分配到乙個筆名,每乙個筆名必須分配給某個同學。現在定義筆名和真名之間的相關度是他們之間的最長公共字首。設筆名為a,真名為b,則他們之間的相關度為lcp a,b 那麼我們就可以得到匹配的質量是每乙個同學筆名和真名...

51Nod1799 二分答案

lyk最近在研究二分答案類的問題。對於乙個有n個互不相同的數且從小到大的正整數數列a 其中最大值不超過n 若要找乙個在a中出現過的數字m,乙個正確的二分程式是這樣子的 l 1 r n mid l r 2 while l r 最終a r 一定等於m。但是這個和諧的程式被熊孩子打亂了。熊孩子在一開始就將...

51nod 3035 劃分平面

題目 用n條直線,劃分平面,最多能夠劃分為多少塊?例如 1條可以劃分為2塊 2條可以劃分為4塊 3條可以劃分為7塊 輸入共一行 1個數n 1 n 10 9 輸出輸出共1行,對應劃分的數量 mod 10 9 7 資料範圍 對於20 的資料,1 n 10 對於44 的資料,1 n 20000 對於100...