zoukankan      html  css  js  c++  java
  • 1074 reverse list

    最后一个测试用例很坑,注意给出的n个节点不一定都在以h为头的链表上,这种测试用例在PAT链表相关的问题中多次出现,要予以注意。

    AC代码

    #include <vector>
    #include <map>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    class node{
    public:
        int addr;
        int v;
        int next;
    };
    int main(){
        int h,n,k;
        scanf("%d %d %d",&h,&n,&k);
        vector<node> list;
        map<int,node> rec;
        for(int i = 0;i < n;i++){
            node tmp;
            scanf("%d %d %d",&tmp.addr,&tmp.v,&tmp.next);
            rec[tmp.addr] = tmp;
        }
        int addr(h);
        int count(0);
        while(addr != -1){
            list.push_back(rec[addr]);
            addr = rec[addr].next;
        }
        n = list.size();
        if(n < k){
            for(int i = 0;i < list.size();i++){
                if(list[i].next != -1)
                    printf("%05d %d %05d
    ",list[i].addr,list[i].v,list[i].next);
                else
                    printf("%05d %d -1
    ",list[i].addr,list[i].v);
            }
            return 0;
        }
        for(int i = 0;i < n / k;i++){
            reverse(list.begin() + i * k,list.begin() + (i+1) * k);
            for(int j = i * k;j < (i+1) * k;j++){
                if(j != (i+1) * k - 1)
                    list[j].next = list[j+1].addr; 
            }
        }
        for(int i = 0;i < n / k;i++){
            if((i+1) * k < n)
                list[i * k + k - 1].next = list[(i+1) * k].addr;
            else
                list[i * k + k - 1].next = -1;
        }
        list.back().next = -1;
        for(int i = 0;i < list.size();i++){
            if(list[i].next != -1)
                printf("%05d %d %05d
    ",list[i].addr,list[i].v,list[i].next);
            else
                printf("%05d %d -1
    ",list[i].addr,list[i].v);
        }
        return 0;
    }
  • 相关阅读:
    SA(后缀数组)专题总结
    LCT总结
    多项式全家桶
    fft.ntt,生成函数,各种数和各种反演
    P3939 数颜色
    P1879 [USACO06NOV]玉米田Corn Fields
    主席树模板
    P2633 Count on a tree
    P1972 [SDOI2009]HH的项链
    数论
  • 原文地址:https://www.cnblogs.com/Aldorado/p/5256473.html
Copyright © 2011-2022 走看看