HDU6150 Vertex Cover

来源:互联网 发布:ec软件使用 编辑:程序博客网 时间:2024/06/05 01:51

简略题意:给出一段贪心选择最小顶点覆盖问题的代码,要去把他hack掉,并使得贪心的答案要是正确答案的至少3倍。

构造一个二分图,设左边有n个点,标号是1~n。对于每个i [1, n]
​个点,每个点都选择左边的i个点连 1 条边,最终使得左边每个点的度数都为log级别,然而此时贪心的做法会选择右边的nlogn个点作为答案点,而正确答案应该是左边的n个点。

#include <bits/stdc++.h>using namespace std;int main() {    int n = 15;    cout<<60<<" "<<189<<endl;    int ss = n+1;    for(int i = 1; i <= n; i++) {        int cnt = 0;        for(int j = 1; j <= n/i; j++) {            for(int k = 1; k <= i; k++)                printf("%d %d\n", ss, ++cnt);            ss++;        }    }    printf("%d\n", n);    for(int i = 1; i <= n; i++)        cout<<i<<'\n';    return 0;}
原创粉丝点击