• 2015年NEUACM一月月赛 B


    问题 B: a Simple Problem

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 412  解决: 99
    [提交][状态][讨论版]

    题目描述

    Many people think hh is a diaosi, but hh is a very rich man whose nickname is wenzhoutuhao,and he made a lot of money by buying the stock of neusoft. He bought n diamonds.One day he found that his warehouse is too small to accommodate these diamonds. so he decide to transfer c of the diamonds to another warehouse.He made the n diamonds into a row, with a number written on their positions, the number is the value of the diamond,the unit is billion(oh no so rich man),then,hh tells you to choose c diamonds,which will be sent to other warehouse,he also imposed two conditions.They are:

      1.the chosen c diamonds must be formed a contiguous

    segment

      2.any of the chosen diamond’s value should not be greater than t,because he thought you may be would steal them.Find the number of ways you can choose the c diamonds.

    输入

    50 group tests,the first line of input will contain three space separated integer n(1<=n<=10^5),t(0<=t<=10^9) and c(1<=c<=n)

    the next line will contain n space separated integer,the ith integer is the value of ith diamond,the value will be non-negative and will not be exceed 10^9

    输出

    print a single integer——the number of ways you can choose the c diamonds

    样例输入

    4 3 3
    2 3 1 1
    1 1 1
    2

    样例输出

    2
    0
    

    提示

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    int main()
    {
    #ifdef CDZSC_OFFLINE
        freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
    #endif
        int n,t,c,i,a[100050],p;
        while(scanf("%d%d%d",&n,&t,&c)!=EOF)
        {
            memset(a,0,sizeof(a));
            int sum=0,k=1;
            for(i=1; i<=n; i++)
            {
                scanf("%d",&p);
                if(p>t)
                {
                    a[k++]=i;
                }
            }
            a[k++]=n+1;
            if(k-2==0)
            {
                printf("%d
    ",n-c+1);
            }
            else if(k-2==n)
            {
                printf("0
    ");
            }
            else
            {
                for(i=1; i<k; i++)
                {
                    if(a[i]-a[i-1]-1>=c)
                    {
                        sum+=(a[i]-a[i-1]-1-c+1);
                    }
                }
                printf("%d
    ",sum);
            }
        }
        return 0;
    }
  • 相关阅读:
    转载--C 的回归
    学嵌入式不是你想的那么简单--转载
    scanf() 与 gets()--转载
    getchar、getch、getche 与 gets()
    scanf()函数原理
    C/C++头文件一览
    再论函数指针、函数指针数组
    初论函数指针、指针函数、指针的指针
    转载--一个“码农”自述的血泪史:当了35年程序员,我最大的遗憾就是没抓住机遇转行
    转载--协方差的意义和计算公式
  • 原文地址:https://www.cnblogs.com/Wing0624/p/4264439.html
Copyright © 2020-2023  润新知