POJ3320尺取法

n个数，求最小区间覆盖着n个数中所有的不相同的数字。

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {
public static void main(String[] args) {
new POJ3320().solve();
}
}

class POJ3320 {
PrintWriter out = new PrintWriter(System.out);
final int N = 1000008 ;
int[] a = new int[N] ;
Set<Integer> set = new HashSet<Integer>() ;
Map<Integer , Integer> map = new HashMap<Integer, Integer>() ;

void solve() {
int n = in.nextInt() , size = 0 ;
set.clear() ;
map.clear() ;
for(int i = 0 ; i < n ; i++){
}
size = set.size() ;

int start = 0 , end = 0 , sum = 0 ;
int res = n ;
for(;;){
while(end < n && sum < size){
Integer cnt = map.get(a[end]) ;
if(cnt == null){
sum++ ;
map.put(a[end] , 1) ;
}
else map.put(a[end] , cnt+1) ;
end++ ;
}
if(sum < size) break ;
res = Math.min(end - start , res) ;
int cnt = map.get(a[start]) ;
if(cnt == 1){
map.remove(a[start]) ;
sum-- ;
}
else map.put(a[start] , cnt-1) ;
start++ ;
}
out.println(res) ;
out.flush() ;
}
}

public StringTokenizer tokenizer;

tokenizer = new StringTokenizer("");
}

private void eat(String s) {
tokenizer = new StringTokenizer(s);
}

public String nextLine() {
try {
} catch (Exception e) {
return null;
}
}

public boolean hasNext() {
while (!tokenizer.hasMoreTokens()) {
String s = nextLine();
if (s == null)
return false;
eat(s);
}
return true;
}

public String next() {
hasNext();
}

public int nextInt() {
return Integer.parseInt(next());
}

public long nextLong() {
return Long.parseLong(next());
}

public double nextDouble() {
return Double.parseDouble(next());
}

public BigInteger nextBigInteger() {
return new BigInteger(next());
}

}


• 本文已收录于以下专栏：

POJ_3061 && POJ_3320 (尺取法)

• jhgkjhg_ugtdk77
• 2015年05月27日 21:31
• 877

poj3320 尺取法

• Twenty_seven
• 2015年03月06日 16:53
• 178

poj3320 尺取法~~

Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submission...
• liyunlong41
• 2015年09月28日 20:00
• 194

poj3320尺取法

• aonaigayiximasi
• 2016年08月09日 21:30
• 132

尺取法--poj3320

Language: Default Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K...
• u010660276
• 2013年09月20日 19:40
• 1223

尺取法+POJ3320

Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam is co...
• qq_34649947
• 2017年05月12日 21:26
• 78

POJ3320 尺取法

Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam is co...
• FrankAx
• 2017年08月01日 20:17
• 77

POJ3320尺取法

Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submission...
• zcj5027
• 2016年02月10日 14:06
• 202

poj3320 尺取法 <挑战程序设计竞赛>

2018-2-7 与poj3061类似，直接使用尺取法即可，这里使用STL里面的map求解更为方便，可以直接得到每个知识点出现的次数，继而便于进行加一减一操作。 #include #include...
• qq_34600424
• 2018年02月07日 17:38
• 7

尺取法 poj3061 poj3320

http://poj.org/problem?id=3061 /* (1).s=t=sum=0初始化 (2).只要sum=S则无解。有解则res=min(res,t-s); (4).sum减去序...
• hnust_taoshiqian
• 2015年06月20日 18:13
• 243

举报原因： 您举报文章：POJ3320尺取法 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)