前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >51Nod-1874-字符串排序

51Nod-1874-字符串排序

作者头像
f_zyj
发布2018-01-09 10:21:19
3500
发布2018-01-09 10:21:19
举报

ACM模版

描述

描述
描述

题解

很简单的一个逆序数问题,不过因为一个坑点,WAWA 了好几发,一开始把 nn 和 mm 看反了……

代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>

using namespace std;

/*
 *  也可以用树状数组做
 *  a[0...n - 1] cnt = 0; call: MergeSort(0, n)
 */
const int MAXN = 55;
const int MAXM = 111;

int n, m, cnt;
pair<int, int> pii[MAXM];
char s[MAXM][MAXN];
char c[MAXM], t[MAXM];

void MergeSort(char *a, int l, int r)
{
    int mid, i, j, tmp;
    if (r > l + 1)
    {
        mid = (l + r) / 2;
        MergeSort(a, l, mid);
        MergeSort(a, mid, r);
        tmp = l;
        for (i = l, j = mid; i < mid && j < r;)
        {
            if (a[i] > a[j])
            {
                c[tmp++] = a[j++];
                cnt += mid - i;
            }
            else
            {
                c[tmp++] = a[i++];
            }
        }
        if (j < r)
        {
            for (; j < r; ++j)
            {
                c[tmp++] = a[j];
            }
        }
        else
        {
            for (; i < mid; ++i)
            {
                c[tmp++] = a[i];
            }
        }
        for (i = l; i < r; ++i)
        {
            a[i] = c[i];
        }
    }
}

int main(int argc, const char * argv[])
{
//    freopen("/Users/zyj/Desktop/input.txt", "r", stdin);
//    freopen("/Users/zyj/Desktop/output.txt", "w", stdout);

    cin >> n >> m;
    for (int i = 0; i < m; i++)
    {
        scanf("%s", s[i]);

        memcpy(t, s[i], sizeof(s[i]));

        cnt = 0;
        MergeSort(t, 0, n);
        pii[i].first = i;
        pii[i].second = cnt;
    }

    sort(pii, pii + m,
         [&](const pair<int, int> &a, const pair<int, int> &b)
         { return a.second == b.second ? a.first < b.first : a.second < b.second; });

    for (int i = 0; i < m; i++)
    {
        printf("%s\n", s[pii[i].first]);
    }

    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年12月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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