前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【CodeForces 618B】Guess the Permutation

【CodeForces 618B】Guess the Permutation

作者头像
饶文津
发布2020-06-02 11:34:57
4820
发布2020-06-02 11:34:57
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏

题意

有个1到n的一个全排列,告诉你第i个数和全部n个数相比的较小数是多少,和自己相比时为0,于是有个主对角线为0的矩阵,求原数列

分析

我的想法是,给我们的每一行之和按大小排一下,就知道第i个数是数列里第几大的了。因为是n的全排列,所以第几大就是几。

按sum排完序后,r[sum[i].id]=i;这句表示原来在id位置的数是现在第i大的,所以r就是要求的全排列了。

代码

代码语言:javascript
复制
#include <stdio.h>
#include <algorithm>
#define N 60
using namespace std;
long long n,ans,a,r[N];
struct x
{
    int v,id;
} sum[N];
int cmp(x a,x b)
{
    return a.v<b.v;
}
int main()
{
    scanf("%lld",&n);
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
        {
            scanf("%lld",&a);
            sum[i].v+=a;
        }
        sum[i].id=i;
    }
    sort(sum+1,sum+1+n,cmp);
    for(int i=1; i<=n; i++)
        r[sum[i].id]=i;
    for(int i=1; i<=n; i++)
        printf("%lld ",r[i]);
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-02-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 分析
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档