zoukankan      html  css  js  c++  java
  • hdu 5813 Elegant Construction 贪心(多校)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5813
    题意:

    给出n个城市,需要在这些城市之间修单向路,每个城市i都有一个要求,就是需要从i走到ai个城市,随意给出一个方案?

    分析:

    做法跟官方题解一样:
    将顶点按能到达的点数从小到大排序,排好序之后每个点只能往前面的点连边. 因而如果存在一个排在第i位的点,要求到达的点数大于i-1,则不可行;否则就可以按照上述方法构造出图. 复杂度O(N^2).

    using namespace std;
    #define fi first
    #define se second
    typedef pair<int,int>pii;
    typedef long long ll;
    const int N=1e3+2;
    
    pii a[N];
    int n;
    int main()
    {
        int T; scanf("%d",&T);
        for(int cas=1;cas<=T;cas++){
            vector<pii>ans;
            scanf("%d",&n);
            for(int i=0;i<n;i++){
                scanf("%d",&a[i].fi);
                a[i].se=i+1;
            }
            sort(a,a+n);
            bool flag=1;
            if(a[0].fi!=0)flag=0;
            for(int i=1;i<n;i++){
                int x=a[i].fi;
                if(x>i){flag=0;break;}
                for(int j=0;j<i&&x;j++,x--){
                    ans.push_back(make_pair(a[i].se,a[j].se));
                }
            }
            if(!flag)printf("Case #%d: No
    ",cas);
            else{
                printf("Case #%d: Yes
    ",cas);
                printf("%d
    ",ans.size());
                for(int i=0;i<ans.size();i++)printf("%d %d
    ",ans[i].fi,ans[i].se);
            }
        }
        return 0;
    }
  • 相关阅读:
    程序设计网站综合
    .net 获取url的方法(转)
    制作简单的语音识别系统(阅读文章)
    创建 WPF 不规则窗口
    高斯消元法
    How many ways(DFS记忆化搜索)
    I NEED A OFFER!
    免费馅饼
    N^N(Leftmost Digit )
    Common Subsequence
  • 原文地址:https://www.cnblogs.com/01world/p/5762807.html
Copyright © 2011-2022 走看看