Elegant Construction

41 篇文章 0 订阅

这里写图片描述



水题:考虑把a[i]从大到小排序,然后每个节点都从后往前连边,那么就保证了不会出现重复情况(即连了一个几点却没有与这个节点的儿子直接连边),所以每个节点就要从后往前连a[i]条边,如果没法连就是不合法的情况。



#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;

const int maxn = 10000;
struct Node {
    int val, index;
    bool operator<(const Node &other) const {
        return val > other.val;
    }
}a[maxn];
int n, sum;
int main() {
    int tt;
    scanf("%d", &tt);
    for (int cases = 1; cases <= tt; cases++) {
        bool flag = true;
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) {
            scanf("%d", &a[i].val);
            a[i].index = i;
        }
        sort(a+1, a+1+n);
        sum = 0;
        for (int i = n; i >= 1; i--) {
            if (n-i < a[i].val) flag = false;
            sum += a[i].val;
        }
        printf("Case #%d: ", cases);
        if (flag) printf("Yes\n");
        else {
            printf("No\n"); continue;
        }
        printf("%d\n", sum);
        for (int i = n; i >= 1; i--)
            for (int j = n; j >= n-a[i].val+1; j--) {
                printf("%d %d\n", a[i].index, a[j].index);
            }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ggplot2是一种用于绘制优雅图形的R语言包。它提供了一种基于图层的绘图系统,使得用户可以通过简单的代码创建复杂美观的图形。 首先,ggplot2采用了一种统一的语法,即“建立-添加图层-调整细节”的方式。用户只需通过一个ggplot()函数建立一个图形对象,然后通过不同的geom_函数来添加不同的图层,例如,geom_point()用于添加散点图,geom_line()用于添加线图等。这种语法设计使得代码结构清晰易懂,用户可以更好地组织和管理绘图代码。 其次,ggplot2提供了丰富的绘图选项,使得用户可以轻松调整图形的外观。用户可以通过使用scale_函数来调整颜色、尺寸、填充等属性,还可以通过theme_函数来修改坐标轴、标题、背景等元素。ggplot2还支持自定义主题和自定义图层,用户可以根据自己的需求定制个性化的图形。 另外,ggplot2还提供了数据的分组和聚合功能,使得用户可以轻松绘制分组柱状图、箱线图等图形。用户可以通过在aes()函数中指定分组变量来实现数据分组,还可以使用stat_函数来进行聚合操作,例如,使用stat_summary()函数计算均值、中位数等统计量并绘制到图形中。 最后,ggplot2还支持数据的层次化可视化,使得用户可以轻松绘制多个图形并将其组合到一个图形对象中。用户可以使用facet_grid()将数据按照一个或多个变量划分成多个小图,并可以通过coord_函数来调整子图之间的间距和位置。这使得用户可以在一个图形中同时展示多个变量的关系,更好地理解数据。 综上所述,ggplot2通过其简洁的语法、丰富的绘图选项、分组聚合功能和层次化可视化功能,提供了一种优雅的方式来创建美观、易懂的图形,使得用户可以更好地探索和展示数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值