摘要:"传送门" 树上差分+线段树合并+离散化 对于修改的路径,树上差分就好了 代码: c++ include include include include include using namespace std; void read(int &x) { char ch; bool ok; for(ok 阅读全文
posted @ 2019-03-26 22:01 蒟蒻--lichenxi 阅读 (15) 评论 (0) 编辑
摘要:"传送门" 思路确实简单,很容易想到差分 差分完了之后就是一个求$n$个字符串的最长公共子串,先将所有串拼成一个串,中间加些特别大的数,为了防止差分后出现负数,也要加一个大数,这些细节自己处理下,接下来用$sa$就可以了 二分答案之后拿$height$数组判定就好了 这里说一下判定,如果出现了一个$ 阅读全文
posted @ 2019-03-26 13:50 蒟蒻--lichenxi 阅读 (14) 评论 (0) 编辑
摘要:"传送门" 显然还是虚树,虚树之后树形dp 然后我没想到正确的树形dp,只想到一个错误的二次换根 写到一半发现错了,只能写了颗线段树+二次换根,线段树记的就是所有关键点到当前根的距离 写到一半又想到了正确的树形dp,然而真的不想再改了,感觉二次换根也能过: 就是每次对于当前走到的节点记一下它子树里深 阅读全文
posted @ 2019-03-26 10:00 蒟蒻--lichenxi 阅读 (11) 评论 (0) 编辑