• [1627] Alex’s Game(II)

  • 时间限制: 2000 ms 内存限制: 65535 K
  • 问题描述
  • Alex likes to play with one and zero as you know .

    Today he gets a sequence which contains n(n<=1e5) integers.Each integer is no nore than 100.now he wants to know what’s the minimun contigous subsequence that their puduct contain no less than k(k<=1e5) zeros in the tail.

  • 输入
  • First are two integers n and k.
    Next contains n lines ,every line contains n integers. 
    All integers are bigger than 0.
  • 输出
  • For each case output the answer if you can find it.
    Else just output “haha”
  • 样例输入
  • 5 1
    2 10 2 5 1
    5 3
    2 10 2 5 1
  • 样例输出
  • 1
    haha

刚开始以为K=0的话就直接输出0,后来发现0的情况要特判:若每一个数都末尾带0,即能被10整除,则输出0,否则只要取那个不是10倍数的数即可,输出1.其他情况用尺取法。

统计2与5的个数,只有这两个数可以影响末尾0的个数,每一次加上L或减掉R那边的两个统计个数即可。

代码:

#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<cstdio>
#include<string>
#include<deque>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
typedef long long LL;
#define INF 0x3f3f3f3f
int two[100010];
int five[100010];
int pos[100010];
inline int conttwo(int n)
{
if(n%2!=0)
return 0;
else
{
int ans=0;
while (n%2==0)
{
ans++;
n>>=1;
}
return ans;
}
}
inline int contfive(int n)
{
if(n%5!=0)
return 0;
else
{
int ans=0;
while (n%5==0)
{
ans++;
n/=5;
}
return ans;
}
}
int main(void)
{
int n,k,dx,ans,i,j,t;
while (~scanf("%d%d",&n,&k))
{
memset(two,0,sizeof(two));
memset(five,0,sizeof(five));
for (i=1; i<=n; i++)
{
scanf("%d",&pos[i]);
two[i]=conttwo(pos[i]);
five[i]=contfive(pos[i]);
}
if(k<=0)//特判0
{
bool flag=0;
for (i=1; i<=n; i++)
{
if(pos[i]%10!=0)
{
flag=1;
break;
}
}
if(flag)
printf("%d\n",1);
else
printf("%d\n",0);
continue;
}
int l=1,r=1,dx=INF;
int sum5=0,sum2=0;
while (1)
{
while (r<=n&&min(sum5,sum2)<k)
{
sum5+=five[r];
sum2+=two[r];
r++;
}
if(min(sum5,sum2)<k)
break;
dx=min(dx,r-l);
sum5-=five[l];
sum2-=two[l];
l++;
}
if(dx==INF)
printf("haha\n");
else
printf("%d\n",dx);
}
return 0;
}

  

NOJ——1627Alex’s Game(II)(尺取)的更多相关文章

  1. NOJ 1072 The longest same color grid(尺取)

    Problem 1072: The longest same color grid Time Limits:  1000 MS   Memory Limits:  65536 KB 64-bit in ...

  2. Gym 100703I---Endeavor for perfection(尺取)

    题目链接 http://codeforces.com/problemset/gymProblem/100703/I Description standard input/outputStatement ...

  3. hdu 4123 Bob’s Race 树的直径+rmq+尺取

    Bob’s Race Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Probl ...

  4. Codeforces Round #116 (Div. 2, ACM-ICPC Rules) E. Cubes (尺取)

    题目链接:http://codeforces.com/problemset/problem/180/E 给你n个数,每个数代表一种颜色,给你1到m的m种颜色.最多可以删k个数,问你最长连续相同颜色的序 ...

  5. poj2566尺取变形

    Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronaut ...

  6. poj2100还是尺取

    King George has recently decided that he would like to have a new design for the royal graveyard. Th ...

  7. hdu 6231 -- K-th Number(二分+尺取)

    题目链接 Problem Description Alice are given an array A[1..N] with N numbers. Now Alice want to build an ...

  8. Codeforces 939E Maximize! (三分 || 尺取)

    <题目链接> 题目大意:给定一段序列,每次进行两次操作,输入1 x代表插入x元素(x元素一定大于等于之前的所有元素),或者输入2,表示输出这个序列的任意子集$s$,使得$max(s)-me ...

  9. cf1121d 尺取

    尺取,写起来有点麻烦 枚举左端点,然后找到右端点,,使得区间[l,r]里各种颜色花朵的数量满足b数组中各种花朵的数量,然后再judge区间[l,r]截取出后能否可以供剩下的n-1个人做花环 /* 给定 ...

随机推荐

  1. ansys-表格

    转自http://blog.sina.com.cn/s/blog_833dee820102xwb3.html ANSYS中表格数组的定义及使用举例 ANSYS中会有许多的参数数据,这些参数的形成后要放 ...

  2. UVA 11853 - Paintball 战场(dfs)

    题意:有n个敌人,每个敌人有一个攻击范围,问你是否存在从西边到东边的路径,如果存在,输出入点和出点最靠北的坐标. 把每个敌人看出一个圆,从上往下跑dfs连通,如果到达底部,那么无解.要求出最靠北的坐标 ...

  3. codeforce Gym 100500I Hall of Fame (水)

    题意:统计一些串中,字母的出现频率,不分大小写,找出现频率最高5个字符(相同频率优先取字典序大的),把他们的对应的值加起来判断以下是否大于62. 没出现的不算. #include<cstdio& ...

  4. UITableView设计思想 考察

    整体使用了build模式:单是组织结构混乱:不符合人类思维. UITableViewDataSource:描述了View的要素个数情况:并担负了builder功能. UITableViewDelega ...

  5. java的IO机制

    BIO.NIO.AIO -----> Block-IO : inputStream 和OutputStream,Reader和Writer 1个连接,启动一个线程,这样导致很大的线程开销 NIO ...

  6. java基础—equals方法

    一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test; 2 3 public class TestEquals { 4 public s ...

  7. 使用 CFile 的子类 CStdioFile 的注意事项

    目前为止只用到了 ReadString,也了解了一下 WriteString. 由于程序需要,本来程序中是用的CFile, 但是需要逐行读取文件数据,所以谷歌找到了 ReadString 类 —— 继 ...

  8. python numpy模块

    目录 numpy模块 一维数组 二维数组(用的最多的) 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的元素的替换 通过函数方法创建多维数组 矩阵的运算 点乘和转置(了解) 点乘必须 m*n ...

  9. JAVA基础篇—继承

    父类Vehicle package com.car; public class Vehicle { final String brand;// String color;// double speed ...

  10. unix cc编译过程

    1.编译并链接一个完全包含与一个源文件的C程序:                cc program.c     这条命令产生一个称为a.out的可执行程序.中间会产生一个名为program.o的目标 ...