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;
    }
  • 相关阅读:
    317 随笔
    316 随笔
    315 随笔
    python 第一章
    matlab 第四章 第一节 字符串 元胞
    matlab 第三章 第二节 多维数组
    matlab 第三章
    python 循环+break continue
    Springboot 教程 导入
    matlab 第二章 第三节 数值表示、变量及表达式
  • 原文地址:https://www.cnblogs.com/01world/p/5762807.html
Copyright © 2011-2022 走看看