进食猴人(如果你用string)

P1104 生日

EDJIW @ 2024-11-29 22:16:09

AC:

bool cmp(Node x,Node y){
    if(x.ug==y.ug)return x.kk>y.kk;//kk是输入顺序
    return x.ug<y.ug;//ug是用sting表示生日
}

WA #5:

bool cmp(Node x,Node y){;
    return x.ug<=y.ug;//含义与上同
}

我也不知哪里有错,反正改了就对了,求dalao指点


by shawn0618 @ 2024-11-29 22:22:01

@EDJIW

如果相等的话,执行交换,然而题目要求保留原顺序,所以前者ac。


by shawn0618 @ 2024-11-29 22:23:45

我猜把后面的改成这样也对。

bool cmp(Node x,Node y){;
    return x.ug<y.ug;
}

by LincW @ 2024-11-29 22:38:15

@EDJIW 要求 cmp(x,x)==false


by ppyycc @ 2024-11-29 22:57:34

含义并非与以上相同
AC 代码中的 cmp 函数考虑到了输入顺序(排序时 sort 有多种排序方法,这可能会导致不稳定),WA 的原因也就是没有考虑到排序后的不稳定情况。

所以通常在做与结构体排序有关的题通常会考虑多种情况(这也是个好习惯)。

代码:

#include<bits/stdc++.h>
using namespace std;

struct n_y_m_n
{
    string name;
    int yea, mou, day, now;                       //年、月、日、顺序
}lis[114514];

bool cmp(n_y_m_n b, n_y_m_n a)                    //猜猜为什么b在前
{
    if (a.yea > b.yea) return 1;//-
    if (a.yea < b.yea) return 0;// |
    if (a.mou > b.mou) return 1;// |
    if (a.mou < b.mou) return 0;// |—这里都是在不等的情况下由深及浅的判断                               // |
    if (a.day > b.day) return 1;// |
    if (a.day < b.day) return 0;//-
    if (a.now < b.now) return 1;//—这里进行全部相等的判断
    else return 0;

}

int main()
{
    int n;

    cin >> n;

    for (int i = 0; i < n; i++) { cin >> lis[i].name >> lis[i].yea >> lis[i].mou >> lis[i].day; lis[i].now = i; }

    sort(lis, lis + n, cmp);

    for (int i = 0; i < n; i++)cout << lis[i].name << endl;
    return 0;
}
\colorbox{X}{\color{purple} {{TLE:Time Limit Enough 时间充裕}}} \colorbox{X}{\color{red} {{WA:Weird Answer 不可思议的答案}}} \colorbox{X}{\color{green} {{AC:Answer Casual 答案随意}}} \colorbox{X}{\color{pink}{{ MLE:Most Likely Explanation最可能的答案}}} \colorbox{X}{\color{orange}{{ RE:Right Evidence 正确的依据}}}
嘿嘿 QAQ

by mingzhen_ikun @ 2024-12-04 22:22:05

别的不知道,不过建仪改成

bool cmp (const Node &a,const Node &b)

by mingzhen_ikun @ 2024-12-04 22:27:27

@ppyycc 怎么打出有颜色的字体还有这么小的字的?


by ppyycc @ 2024-12-07 21:50:15

@mingzhen_ikun

小字:6个#

嘿嘿

颜色: \colorbox{颜色1}{\color{颜色2} {{你的字}}} $


|