zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Linux自定义服务文件编写
    Ubuntu PPA方式安装vim
    ubuntu PPA使用指南
    ubuntu安装最新emacs
    Docker支持中文
    C#调用Go版DLL
    C#调用exe程序
    golang编写动态库供c#程序调用
    科学正在追赶中医,中医将变得时髦(转载)
    常见.NET功能代码汇总 (3)
  • 原文地址:https://www.cnblogs.com/Wing0624/p/4264439.html
Copyright © 2011-2022 走看看