Regionals 2014 Asia - Daejeon

来源:互联网 发布:淘宝代购延长收货 编辑:程序博客网 时间:2024/05/22 12:28

D.求一个n点无向图的最大点集,满足每个点的度数均大于k
正难则反删点法。维护一个set,按照度数从小到大排列,每次取出度数最小的点,看是否满足大于k,若满足则点数最大为当前set中点数;否则删除该点,与该点相连的点度数减1,维护set的单调性
思考:如果改为度数均不大于k,则不能用删点法解决,反例为一棵树,3层的3叉树,满足每个点度数均不大于3的最少删点数为1,删除根结点即可,而根结点并非度数最大的点。

F.求排列由多少个环构成
直接按顺序查找并标记即可

G.树中每个点有两个权值a和b。求满足a权值和不大于A,且b权值和最大的链
树分治

H.最少操作从一个字符串转移到另一个字符串
找规律,发现后面的b与a交换满足条件,从小到大依次交换a即可

I.用最小的三个全等正方形覆盖平面内所有点
先求出点的上下左右边界,二分答案L,判断L矩形是否能够覆盖全部点。
枚举第一个正方形的四个可能位置(左上/左下/右上/右下),删除该正方形内的点,剩下的点继续枚举,(4+4^2+4^3)此枚举,每次O(n),从复杂度不超过100*n

K.一段线段上每个点有两个权值a和b。用若干线段进行覆盖,覆盖点和线段有三个权值a,b,c。可以覆盖区间内每点的a和b,但是要付出c的代价,求每个点的权值都超过a和b的最小代价。
此题的特殊之处在于线段的长度仅为1,7,30三种选择,所以可以用dp求解。难点在于想到用第二维表示剩余的汽车票天数

L.用若干线段[l,r]覆盖区间内的点,每个线段至多用一次,且每个点至多覆盖2次。每个线段都有一个权值,求最大权值和
最小费用最大流。难点在于如何建图。

拓展题:用若干线段[l,r]覆盖区间内的点,每个线段可以重复使用,且每个点至少覆盖a[i]次,每个线段都有一个权值,求满足条件的最小权值和
最小费用最大流,难点在于如何建图。
模型来源于:noi2008志愿者

0 0