zoukankan      html  css  js  c++  java
  • HDOJ 1590

      1 #include<stdio.h>
      2 #include<iostream>
      3 #include<stdlib.h>
      4 #include<string.h>
      5 using namespace std;
      6 
      7 typedef struct minheap *Heap;
      8 struct minheap
      9 {
     10     int last,max;
     11     int data[60001];
     12     char str[60001][100];
     13     int para[6001];
     14 }Minheap;
     15 
     16 void HeapInset(int x,Heap H,char s[],int pa)
     17 {
     18     int i;
     19     
     20     i=++H->last;
     21     while(i!=1&&x<H->data[i/2])
     22     {
     23         H->data[i]=H->data[i/2];
     24         strcpy(H->str[i],H->str[i/2]);
     25         H->para[i]=H->para[i/2];
     26         i/=2;
     27     }
     28     H->data[i]=x;
     29     strcpy(H->str[i],s);
     30     H->para[i]=pa;    
     31 }
     32 
     33 
     34 int deleMin(Heap H)
     35 {
     36     int i,ci;
     37     int x,y;
     38     char str[110];
     39     int pa;
     40     x=H->data[1];//堆中最小元
     41     
     42     
     43     strcpy(str,H->str[H->last]);
     44     pa=H->para[H->last];
     45     y=H->data[H->last];
     46     
     47     H->last--;
     48     
     49     i=1;
     50     ci=2;
     51     //cout<<"last="<<H->last<<endl;
     52     while(ci<=H->last)
     53     {
     54         //cout<<"ci="<<ci<<"y="<<y<<endl<<" "<<H->data[ci]<<endl;
     55         if(ci<H->last&&H->data[ci+1]<H->data[ci])ci++;
     56         if(H->data[ci]>y)break;
     57 
     58         
     59         H->data[i]=H->data[ci];
     60         strcpy(H->str[i],H->str[ci]);
     61         H->para[i]=H->para[ci];
     62         
     63         i=ci;
     64         ci*=2;
     65     }
     66     
     67     H->data[i]=y;
     68     strcpy(H->str[i],str);
     69     H->para[i]=pa;
     70     int tmp;
     71     if(H->data[i]==H->data[i+1])
     72     {
     73         tmp=H->data[i];H->data[i]=H->data[i+1];H->data[i+1]=tmp;
     74         tmp=H->para[i];H->para[i]=H->para[i+1];H->para[i+1]=tmp;
     75         strcpy(str,H->str[i]);strcpy(H->str[i],H->str[i+1]);
     76         strcpy(H->str[i+1],str);
     77     }
     78     
     79     return x;
     80 }
     81 int main()
     82 {
     83     char str[100],s1[100];
     84     int para,data;
     85     Heap H;
     86     H=(Heap)malloc(sizeof(Minheap));
     87     H->last=0;
     88     H->max=61234;
     89     while(cin>>s1)
     90     {
     91         
     92         if(s1[0]=='P')
     93         {
     94             cin>>str>>para>>data;
     95             HeapInset(data,H,str,para);
     96             
     97             //cout<<"insert: "<<str<<" "<<para<<" "<<data<<endl;
     98             
     99             //cout<<"text:"<<H->str[1]<<" "<<H->data[1]<<endl;
    100         }
    101         else if(s1[0]=='G')
    102         {
    103             if(H->last==0)
    104                 printf("EMPTY QUEUE!
    ");
    105             else 
    106             {
    107                 cout<<H->str[1]<<" "<<H->para[1]<<endl;
    108                 
    109                 deleMin(H);
    110                 //cout<<"last:"<<H->str[H->last]<<" "<<H->data[H->last]<<endl;
    111                 //cout<<"last-1:"<<H->str[H->last-1]<<" "<<H->data[H->last-1]<<endl;
    112             }
    113             
    114         }
    115         //cout<<H->last<<endl;    
    116     }
    117     return 0;    
    118 }
    View Code

    一直WA~最小堆。应该是相同的优先级的时候,按照输入顺序输出

  • 相关阅读:
    汽车常用的ECU芯片
    Semaphore 和 Mutex
    C语言中结构体 自引用 和 相互引用
    __ARM_PROFILE_M__ __CORE__ __ARMVFP__ __LITTLE_ENDIAN__
    Cortex-M3 Context Switching
    CORTEX -M3 : Registers in depth
    IAR USING PRE- AND POST-BUILD ACTIONS
    IAR EWARM Argument variables $PROJ_DIR$ $TOOLKIT_DIR$
    SQLSERVER一些公用DLL的作用解释
    SQLSERVER性能计数器的简单剖析
  • 原文地址:https://www.cnblogs.com/zeze/p/hdoj1590.html
Copyright © 2011-2022 走看看