UOJ Logo lris的博客

博客

#315为什么没有人用链表啊qwq

2018-08-20 10:45:48 By lris

如题,出题人原本打算是邻接表啊,怎么全都是双关键字排序,一个链表都没有。

#include<iostream>
#include<cstdio>
#define max(a, b) a>b? a:b
const int N=10005;
struct Node
{
    int rank;
    Node *nxt;
    Node(int rank=0, Node *nxt=NULL):
        rank(rank), nxt(nxt) {}
    void Print()
    {
        printf("%d ", rank);
        if(nxt) nxt->Print();
    }
    void Print_end()
    {
        if(nxt) 
        {
            printf("%d ", rank);
            nxt->Print_end();
        }
        else printf("%d", rank);
    }
}*head[N];
void Addnode(int value, int pos)
{
    head[value]=new Node(pos, head[value]);
}
inline int read()
{
    int t=0, f=0; char c;
    while(!isdigit(c=getchar())) f|=(c=='-');
    do t=(t<<3)+(t<<1)+c-'0';
    while(isdigit(c=getchar()));
    return f? -t:t;
}
int main()
{
    int n=read(), t, zd=0;
    for(int i=1; i<=n; i++)
        t=read(), zd=max(zd, t), Addnode(t, i);
    for(int i=0; i<zd; i++)
        if(head[i]) head[i]->Print(); 
    head[zd]->Print_end();
    return 0;
}

评论

pushinl
优美的sort ```cpp #include<iostream> #include<cstdio> #include<algorithm> using namespace std; struct qwq{ int a, b; }pushinl_is_handsome[1000001]; bool cmp(qwq x, qwq y){ return x.a==y.a?x.b>y.b:x.a<y.a; } int n; int main(){ scanf("%d", &n); for(int i=1; i<=n; i++){ scanf("%d", &pushinl_is_handsome[i].a); pushinl_is_handsome[i].b=i; } sort(pushinl_is_handsome+1 , pushinl_is_handsome+n+1, cmp); for(int i=1; i<n; i++) printf("%d ", pushinl_is_handsome[i].b); printf("%d", pushinl_is_handsome[n].b); return 0; } ```
1240590498
我们没学! 们没学! 没学! 学! !
Capella
双关键字排序当然是选择运算符重载 #include <algorithm> #include <cstdio> const int MAXN=200010; int n; struct Number { int v, id; void Read(int i) { scanf("%d", &v); id=i; } bool operator <(const Number &rhs) const { return v<rhs.v || v==rhs.v && id>rhs.id; } }a[MAXN]; int main(int argc, char** argv) { scanf("%d", &n); for(int i=1; i<=n; ++i) a[i].Read(i); std::sort(a+1, a+n+1); for(int i=1; i<=n; ++i) printf("%d ", a[i].id); putchar('\n'); return 0; }

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。