• L2-012. 关于堆的判断*


    L2-012. 关于堆的判断

    参考博客

      1 #include<iostream>
      2 #include<cstdio>
      3 #include<cstring>
      4 #include<cmath>
      5 #include<map>
      6 
      7 using namespace std;
      8 
      9 int n, a[1005];
     10 
     11 //建树的 “模板”
     12 void up( int son )
     13 {
     14     int t = a[son];
     15     int tson = son;
     16     while( (tson > 1)&&( a[tson/2] > t))
     17     {
     18         a[tson] = a[tson/2];
     19         tson = tson/2;
     20     }
     21     a[tson] = t;
     22 }
     23 
     24 void charu( int  t)
     25 {
     26     a[ ++n ] = t;
     27     up( n );
     28 }
     29 
     30 
     31 int main ()
     32 {
     33     int k, m, x, y;;
     34     map <int, int> index; //记录下标
     35     string s;
     36     cin >> k >> m;
     37     n=0;
     38     //建树
     39     for(int i=0; i<k; i++)
     40     {
     41         cin >> x;
     42         charu(x);
     43     }
     44     //给map赋值
     45     for(int i=1; i<=n; i++)
     46     {
     47         index[a[i]] = i;
     48     }
     49     for(int i=0; i<m; i++)
     50     {
     51         cin >> x;
     52         cin >> s;
     53         int index_x = index[x]; 
     54         int index_y;
     55         if(s[0] == 'a')
     56         {
     57             cin >> y;
     58             getline(cin, s);  //这个函数可以输入一个带空格的字符串
     59             index_y = index[y];
     60             if(index_x/2 == index_y/2)
     61                 puts("T");
     62             else
     63                 puts("F");
     64         }
     65         else
     66         {
     67             cin >> s;
     68             cin >> s;
     69             if(s[0] == 'r')
     70             {
     71                 if(index_x == 1)
     72                     puts("T");
     73                 else
     74                     puts("F");
     75             }
     76             else if(s[0] == 'p')
     77             {
     78                 cin >> s;
     79                 cin >> y;
     80                 index_y = index[y];
     81                 if(index_y/2 == index_x)
     82                     puts("T");
     83                 else
     84                     puts("F");
     85 
     86             }
     87             else
     88             {
     89                 cin >> s;
     90                 cin >> y;
     91                 index_y = index[y];
     92                 if(index_x/2 == index_y)
     93                     puts("T");
     94                 else
     95                     puts("F");
     96             }
     97         }
     98     }
     99 
    100     return 0;
    101 }
  • 相关阅读:
    JDK5后的特性整理
    正向代理与反向代理的区别与异同
    我所用过的nginx的功能
    网页端消息推送之推与拉
    在一个py脚本中调用另外一个py脚本中的类或函数
    import与from ... import ...的区别
    python 读取文件
    shell中的特殊变量IFS
    shell 重定向以及文件描述符
    shell下读取文件数据
  • 原文地址:https://www.cnblogs.com/Annetree/p/8678568.html
Copyright © 2020-2023  润新知