链接:http://acm.hdu.edu.cn/showproblem.php?pid=3335
描述:给一堆数,要选出一些数,使得这些数两两不能被整除。问能选出的数的最大个数。
标准解法:Dilworth定理+最小路径覆盖
但有一贪心解法,至今我仍未能证明其正确还是不正确,在此记下:
对点去重,然后排序,建图。若 a[i] | a[j] 则 i->j 连边。构成一个DAG。但是这个DAG很有特点,就是如果i、j间有边且j、k间有边,则i、k间一定有边。故尝试贪心:每次从当前未使用过的最大的数X1开始,找到一个未使用过的能整除X1的最大的数X2,然后再找一个未使用过的能整除X2的最大的数X3,……直到找不到为止。最后得到一条链,把这条链标记为已使用。最后找到的链的个数即为答案。
这种方法是否正确?I don’t know…悲剧。。