关闭

HDU 5813 Elegant Construction(贪心)

133人阅读 评论(0) 收藏 举报
分类:

Description
给出n个点的可达点个数ai,问是否可以构造出一张满足条件的有向无环图,如果可以则输出一种合法的连边情况
Input
第一行一整数T表示用例组数,每组用例首先输入点数n,之后n个整数ai表示每个点可达点的数量(T<=10,1<=n<=1000,0<=ai < n)
Output
对于每组用例,如果可以构造出满足条件的有向无环图则输出YES并输出边数及所有边,否则输出NO
Sample Input
3
3
2 1 0
2
1 1
4
3 1 1 0
Sample Output
Case #1: Yes
2
1 2
2 3
Case #2: No
Case #3: Yes
4
1 2
1 3
2 4
3 4
Solution
i点能连的点只能是aj < ai的j点,那么我们先把这些点按ai从小到大排序,对于i点我们贪心的将其连向a值最小的ai-1个点上,这样就避免了连边时一个点被重复计数的情况,不合法情况就是满足aj < ai的点数小于ai-1
Code

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
#define maxn 1111
int T,n,m,Case=1;
pair<int,int>a[maxn];
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        printf("Case #%d: ",Case++);
        int flag=1;m=0;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i].first);
            m+=a[i].first;
            a[i].second=i;
        }
        sort(a+1,a+n+1);
        for(int i=1;i<=n;i++)
            if(i-1<a[i].first)flag=0;
        if(!flag)printf("No\n");
        else
        {
            printf("Yes\n%d\n",m);
            for(int i=2;i<=n;i++)
                for(int j=1;j<=a[i].first;j++)
                    printf("%d %d\n",a[i].second,a[j].second);
        }
    }
    return 0;
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

简单典型贪心---(解题报告)HDU4310---Hero

HeroTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi...
  • why850901938
  • why850901938
  • 2015-12-10 21:27
  • 450

贪心算法专题(1)--HDU1009

题目大意:fatmouse需要用自己手中的猫粮去跟猫交易javabean-就是咖啡豆,共有n个房间,每个房间与一只猫,第 i 个房间里面,fatmouse可以支付 F[i] 磅的猫粮去交换得到 J[...
  • Kerwun
  • Kerwun
  • 2017-02-20 21:37
  • 161

几个经典的贪心区间问题之区间调度hdu2037

说在前面 今天打了场比赛有个很简单的区间贪心问题写得磕磕绊绊,因此深感几个经典的区间贪心问题还是应该重新看看并加以总结形成模板。这种问题就应该像大神们那样十几分钟内稀里哗啦的敲出来。 A.区间调度...
  • qq_35495556
  • qq_35495556
  • 2016-07-26 00:19
  • 521

ACM刷题之HDU————最少拦截系统(贪心)

最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • xiaofeng187
  • xiaofeng187
  • 2016-04-10 21:41
  • 637

hdu4864 贪心+平衡二叉搜索树(map)

题意 n个机器,m个任务,每个机器最多做一个任务,每个任务最多被一台机器做 每个机器和任务有两个属性,x和y,机器这两个属性都分别大于等于任务的这两个属性时才可做该任务。 问最多能做多少任务。 另外,...
  • luke2834
  • luke2834
  • 2015-12-08 19:41
  • 608

js 构造函数(construction)与原型(prototype)

1.js原型 java有class和instance,js只有构造函数(function Cat(name,age){this.name=name;this.age=age}),为了实现数据共享和抽象...
  • tang7837010
  • tang7837010
  • 2014-12-24 11:21
  • 1011

HDU 5813 拓扑排序

Elegant Construction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth...
  • black_miracle
  • black_miracle
  • 2016-08-09 18:01
  • 372

[NOIOJ19]装箱问题 贪心算法

题目在这儿这题思路很明了,无非是更多地利用空间,尽可能少地空出空位。 不妨设1*1、2*2、3*3、4*4、5*5、6*6的长方体数量分别为c1、c2、c3、c4、c5、c6c_1、c_2、c_3、...
  • ccf15068475758
  • ccf15068475758
  • 2016-10-28 18:28
  • 802

[ACM] hdu 1864 最大报销额(01背包或贪心)

最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su...
  • sr19930829
  • sr19930829
  • 2014-04-06 23:05
  • 1350

HDU2602/HDU1114/HDU2191(重新整理一下01背包,完全背包,多重背包)

好长时间不做背包的问题,有一点遗忘,现在把这些问题整理一下~ 一.01背包(HDU2602) 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2602 题意就...
  • riba2534
  • riba2534
  • 2017-01-11 13:24
  • 861
    个人资料
    • 访问:501258次
    • 积分:23526
    • 等级:
    • 排名:第344名
    • 原创:1897篇
    • 转载:0篇
    • 译文:0篇
    • 评论:68条
    最新评论