如果枚举d来dp,那么就是设f[u][0/1]为u点不断/断掉和父亲的边,然后优先选取f[v][1]+w(u,v)<=f[v][0]的,如果断掉这些度数还是多就用一个堆维护剩下的按f[v][1]+w(u,v)-f[v][0]从大到小取(负的) 然后注意到设当前要求度数是d,那么度数<=d的点全都不用dp,所以可以直接把贡献累加到和他相邻的点上然后断掉边,这样一共算Σ度数ci,就是O(nlogn)的了 #include<iostream> #include<cstdio>…
题意 给你\(n\)个点的树,边有边权 问使得所有的点度数都小于等于\(x\)的最小删边的代价 \([x \in 0...n-1]\) 题解 首先对于每个\(x\) 可以有一个\(O(nlogn)\)的做法 就是设\(f[u][0/1]\)表示不选择/选择点\(u\)的最小代价 那么就是把所有儿子按照\(f[v][1]+w-f[v][0]\)排序 然后\(f[u][0]\)就是选择至少前\(d[u]-x\)小的\(f[v][1]+w\),其他选择\(min(f[v][1]+w,f[v][0])\…
Aspirations:没有结果,没有成绩,acm是否有意义?它最大的意义就是让我培养快速理解和应用一个个未知知识点的能力. ———————————————————————————————————————————————— Background:F. Niyaz and Small Degrees http://codeforces.com/contest/1119/problem/F 这道题目是一道高阶的树形DP的题目,我之前并没有涉及到这类题目. 已经有的基础:DP中的01背包. 特点:看到…
interlinkage: http://codeforces.com/contest/1119/problem/F description: 有一颗$n$个节点的树,每条边有一个边权 对于一个$x$,删去一些边使得每个点的度数都不超过$x$,最小化删去边的边权并输出 需要一次输出$x=0->n-1$的值 $1<=n<=250000$ solution: part1 先考虑单个$x$的做法.任选一个根,设$f_{u,0/1}$表示以节点$u$为根的子树内,节点$u$与它的父亲不断/断的最…
题目 描述 \(n\) 个点的树,每条边有一个边权: 对于一个 \(X\) ,求删去一些边后使得每个点的度数 \(d_i\) 均不超过 \(X\) 的最小代价: 你需要依次输出 \(X=0 \to n-1\) 的答案: 范围 $ 1 \le n \le 250000 $ 题解 考虑对于一个\(X\)怎么做,设 $ dp_{i,0/1} $ 表示 $ u $ 节点的子树,$ i $连向父亲的边是否被删且度数不超过 $ X $ 的最小代价.转移时将 \(dp_{v,1} + w(u,v) - dp_…
打VP的时候由于CXR和XRY切题太快了导致我只能去写后面的题了 然而VP的时候大概还有一小时时想出了\(O(n^2\log n)\)的暴力,然后过了二十分钟才想到删点的优化 结果细节很多当然是写不出来的了,写完加调花了一个多小时吧,真的比赛时还是没什么用的说 首先我们讲一下暴力做法,考虑直接枚举最大的点度数,我们考虑DP删边,设\(f_{x,0/1}\)表示\(x\)的子树内所有点度数小于限制并且\(0/1\)表示与父亲的边是否选择的最小答案 考虑对于\(f_{x,0}\)转移,我们可以把一个…
\(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个结点的树,边有边权,对于每个整数 \(x\in[0,n)\),求出最少的删边代价使得任意结点度数不超过 \(x\).   \(n\le2.5\times10^5\). \(\mathcal{Solution}\)   从单个询问入手,设此时 \(x\) 为常数,就有一个简单的树上 DP.令 \(f(u,0/1)\) 表示 \(u\) 点与父亲的边不断 / 断时,\(u\) 子树内的最小代价.以 \(f…
这场题目设置有点问题啊,难度:Div.2 A->Div.2 B->Div.2 D->Div.2 C->Div.2 D->Div.1 D-> Div.1 E->Div.1 F简直有毒 只AC 4题似乎就是1000+名了 这种考验手速的时刻Itst就比较擅长了,然后就红名+拿衣服了-- A. Ilya and a Colorful Walk 如果最左边和最右边不同就是\(N-1\),否则就是中间跟两边颜色不同的块到两边距离的最大值 代码 B. Alyona and a…
F.Niyaz and Small Degrees 挺sb的一题,为什么比赛时只过了4个呢 考虑当\(x\)固定的时候怎么做.显然可以树形DP:设\(f_{u,i=0/1}\)表示只考虑\(u\)子树中的所有点和边,删边使得点\(u\)的度数\(\leq x-i\)且除\(u\)以外的点度数都\(\leq x\)的最小代价.转移时将\(u\)的所有儿子\(v\)一起考虑,先假设所有\(u,v\)之间的边都删掉,把\(f_{u,i}\)加上\(\sum f_{v,0}+w_{u,v}\),再考虑把…
正题 题目链接:https://www.luogu.com.cn/problem/P7600 题目大意 给出\(n\)个点的一棵树,边有边权,对于每个\(k\)求去掉最小边权和的点使得每个点的度数都不超过\(k\). \(1\leq n\leq 10^5\) 题目大意 APIO遇到的原题,和CF1119F一样,感觉要被冲烂. 先考虑暴力的做法,设\(f_{i,0/1}\)表示点\(i\)割不割连接父节点的边时满足子树条件的最小代价,然后对于每个点把每个儿子割掉的代价排个序取最小的一部分就好了,这…