zoukankan      html  css  js  c++  java
  • hdu 4006 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006

    大连网络赛过得人最多的题 难点在于排序超时 (n k都很大)感谢海峰学长讲述的不排序的排序算法(用空间换时间)

    ①输入 第一个数 m,令ans=m

    ②输入前k个数 若输入的数<ans 令ans=输入的数

    ③输入后面的行 若Q 输出ans 若输入的数大于或等于ans ans向后跳一个数 否则ans不动

     一二过程中place=1;

    三过程中先跳place若place>f[ans] 则让ans跳到int数组的下一个不为0处 place=1;

     代码如下

     1 #include<iostream>
    2 #include<cstdio>
    3 using namespace std;
    4 int f[1000000]={0};
    5 int main()
    6 {
    7
    8 int ncase,kmax,i,j,k,place=1,ans,temp;
    9 char ch;
    10 while(scanf("%d %d",&ncase,&kmax)!=EOF)
    11 {
    12 getchar();
    13 memset(f,0,sizeof(f));
    14 place=1;
    15 scanf("%c %d",&ch,&ans);
    16 getchar();
    17 f[ans]++;
    18 for(i=2;i<=kmax;i++)
    19 {
    20 scanf("%c %d",&ch,&temp);
    21 getchar();
    22 f[temp]++;
    23 if(ans>temp)
    24 ans=temp;
    25 }
    26 for(i=kmax+1;i<=ncase;i++)
    27 {
    28 scanf("%c",&ch);
    29 getchar();
    30 if(ch=='Q')
    31 {printf("%d\n",ans);}
    32 else
    33 {
    34 scanf("%d",&temp);
    35 getchar();
    36 f[temp]++;
    37 if(temp>=ans)
    38 {
    39 place++;
    40 if( place>f[ans])
    41 {
    42 for(j=ans+1;j<=100000;j++)
    43 {
    44 if(f[j]>0)
    45 {
    46 ans=j;
    47 place=1;
    48 break;
    49 }
    50 }
    51 }
    52 }
    53 }
    54 }
    55 }
    56 //system("pause");
    57 return 0;
    58 }

  • 相关阅读:
    C# 导入Excel遇到数字字母混合列数据丢失解决
    C# 导出 Excel
    DataGridView 改变行列颜色
    EditPlus使用技巧
    jquery的事件与应用
    jquery操作DOM元素的复习
    jquery笔记
    jquery 和ajax
    jQuery笔记
    CSS相关知识三
  • 原文地址:https://www.cnblogs.com/yujiaao/p/2167204.html
Copyright © 2011-2022 走看看