pop 3274

Gold Balanced Lineup

Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 14032   Accepted: 4045

Description

Farmer John‘s N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been able to narrow down the list of features shared by his cows to a list of only K different features (1 ≤ K ≤ 30). For example, cows exhibiting feature #1 might have spots, cows exhibiting feature #2 might prefer C to Pascal, and so on.

FJ has even devised a concise way to describe each cow in terms of its "feature ID", a single K-bit integer whose binary representation tells us the set of features exhibited by the cow. As an example, suppose a cow has feature ID = 13. Since 13 written in binary is 1101, this means our cow exhibits features 1, 3, and 4 (reading right to left), but not feature 2. More generally, we find a 1 in the 2^(i-1) place if a cow exhibits feature i.

Always the sensitive fellow, FJ lined up cows 1..N in a long row and noticed that certain ranges of cows are somewhat "balanced" in terms of the features the exhibit. A contiguous range of cows i..j is balanced if each of the K possible features is exhibited by the same number of cows in the range. FJ is curious as to the size of the largest balanced range of cows. See if you can determine it.

Input

Line 1: Two space-separated integers, N and K
Lines 2..N+1: Line i+1 contains a single K-bit integer specifying the features present in cow i. The least-significant bit of this integer is 1 if the cow exhibits feature #1, and the most-significant bit is 1 if the cow exhibits feature #K.

Output

Line 1: A single integer giving the size of the largest contiguous balanced group of cows.

Sample Input

7 3
7
6
7
2
1
4
2

Sample Output

4

Hint

In the range from cow #3 to cow #6 (of size 4), each feature appears in exactly 2 cows in this range

Source

USACO 2007 March Gold

就是说每个奶牛都有特征,然后有k个,用二进制表示,算出一样的最远距离。

数的哈希

#include<cstdio>

#include<cstdlib>

#include<vector>

#define MAXN 100100

#define MOD 999997

using namespace std;

int N,K,f[MAXN][31],d,b,hasha,t,ans,size;

vector<int> vec[10*MAXN];

bool isSame(int i,int j)

{

for(int k=0;k<K;k++)

{

if(f[i][k]!=f[j][k])

{

return false;

}

}

return true;

}

int main()

{

scanf("%d%d",&N,&K);

for(int i=1;i<=N;i++)

{

scanf("%d",&d);

b=0;

while(d)

{

f[i][b]=d%2;

d/=2;

b++;

}

}

for(int i=1;i<=N;i++)

{

for(int j=0;j<K;j++)

{

f[i][j]+=f[i-1][j];

}

}

for(int i=1;i<=N;i++)

{

for(int j=1;j<K;j++)

{

f[i][j]-=f[i][0];

}

f[i][0]=0;

}

vec[0].push_back(0);

for(int i=1;i<=N;i++)

{

hasha=0;

for(int j=0;j<K;j++)

{

hasha=(hasha*7+f[i][j])%MOD;

}

hasha=(hasha+MOD)%MOD;

if(vec[hasha].size()!=0)

{

size=vec[hasha].size();

for(int j=0;j<size;j++)

{

if(isSame(i,t=vec[hasha][j]))

{

if(i-t>ans)

{

ans=i-t;

}

break;

}

}

}

vec[hasha].push_back(i);

}

printf("%d",ans);

return 0;

}

时间: 2024-11-08 20:51:14

pop 3274的相关文章

iOS pop使用通知传值

iOS pop回父级页面,使用通知传值 输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IBAction)buttonClick:(id)sender { //添加 字典,将label的值通过key值设置传递 NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:self.textFieldOne.text,@"textOne",self.textFieldTwo.text,@&q

Stack的pop和push操作

#include <stack> #include <cstdio> using namespace std; int main(){ stack<int> s; s.push(1); s.push(2); s.push(3); printf("%d\n", s.top()); s.pop(); printf("%d\n", s.top()); s.pop(); printf("%d\n", s.top());

Python+Nginx实现邮件POP、IMAP、SMTP代理配置介绍

说到Python,大家都知道,是在运维方面的管理人员需要掌握的一门技术,为什么这么说呢,在运维方面Python开发语言应用比较广,以致可以帮助管理员提高工作效率,具体我就不多少了,接着我们说说邮件代理,因为公司的邮箱系统是使用是IBM的Domino Lotus服务,如果对Lotus了解的都知道,Lotus是文件数据库类型的服务器类型,用户的所有邮箱数据库都是独立的xxx.nsf,而通过数据库模板xxx.ntf进行创建或者定时刷新数据,来保证数据库的额稳定性.而当用户数量多的话,就需要创建多台邮件

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型

import java.util.Stack; /**  * 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.  * @author user  *  *思路:队列是先入先出,栈是先入后出,可以将数据压入第一个栈后,在弹出来压入第二个栈,弹得时候直接从第二个栈弹出,弹出后又将  *第二个栈中的所有数据弹出重新压入的一个栈  */ public class Solution {     Stack<Integer> stack1 = new Stack<

JavaScript中push ,pop ,concat ,join方法

push 方法 将新元素添加到一个数组中,并返回数组的新长度值. arrayObj.push([item1 [item2[. . . [itemN ]]]]) 说明 push 方法将以新元素出现的顺序添加这些元素(即追加新元素到末尾).如果参数之一为数组,那么该数组将作为单个元素添加到数组中.如果要合并两个或多个数组中的元素,需要使用 concat 方法. 版本要求在:5.5 应用于:array对象 pop 方法 移除数组中的最后一个元素并返回该元素. arrayObj.pop( ) 说明 如果

(四)PUSH、POP、PUSHAD与PUSHFD

PUSH:往ESP-4的内存地址存入数据,并且esp的值减存入的数据宽度 push 0x12345678 mov dword ptr ds: [esp-4],eax   //存入数据 lea esp , dword ptr ds: [esp-4]  //提升栈顶 POP:将栈顶的数据复制到指定的容器,ESP并加上该弹出数据的宽度 POP eax  //将栈顶4字节复制到EAX,ESP加4 mov eax,dword ptr ds: [ESP] LEA ESP ,DWORD PTR DS: [ES

阿里企业邮箱的POP地址

阿里企业邮箱的POP3.SMTP.IMAP地址是什么? 企业邮箱POP.SMTP.IMAP地址列表如下:  协议  服务器地址  服务器端口号(常规)  服务器端口号(加密)  POP3  pop3.mxhichina.com  110  995  SMTP  smtp.mxhichina.com  25  465  IMAP  imap.mxhichina.com  143  993 推荐您使用加密端口连接,更加安全,使用时请注意加密端口是否已在您的本地电脑和网络中开放.

js数组的操作push,pop,shift,unshift

push(args)可以每次压入多个元素,并返回更新后的数组长度. var oldArr=[1,2,3]; alert(oldArr.push(4,[5,6]))–>5(这里只会将[5,6]当做一个元素来计算,返回更新后的数组长度5) 此时oldArr–>[1,2,3,4,[5,6]] pop()函数每次只会弹出最后一个结尾的元素,并返回弹出的元素,如果是对空组数调用pop()则返回undefined. alert(oldArr.pop())–>[5,6](这里弹出最后一个元素[5,6]

【转】自定义iOS的Back按钮(backBarButtonItem)和pop交互手势(interactivepopgesturerecognizer) --- 不错

原文网址:http://blog.csdn.net/joonsheng/article/details/41362499 序 说到自定义UINavigetionController的返回按钮,iOS7以后,多了一个“<” 这样的返回图标,而目前主流的应用,都是只保留了“<”,而去掉了文字,那么怎么样自定义一个自己的“<"按钮,或者用系统的“<”,但不要文字呢? 1.设置中的返回按钮(带文字) 2.音乐中播放时(不带文字) 1.直接上答案 [objc] view plain