高效算法设计专项:UVa 11572
2013-05-15 21:28
239 查看
题目大意就是求一串数中最长的子串,要求该子串中的数互不相同。这题扫一遍就可以了,可以一边读入一边做。用一个map映射距当前位置的值为i的最近的位置j,同时记录一个pre,表示从pre到当前位置没有相同元素。然后在读入的同时维护map和pre,同时更新最长的不含相同元素的子串即可。
#include <iostream> #include <cstdio> #include <map> #include <algorithm> using namespace std; int n; map<int,int> table; int main() { freopen("in.txt","r",stdin); int T; scanf("%d",&T); while(T--) { table.clear(); scanf("%d",&n); int ans=0,pre=0; for(int i=0;i<n;i++) { int t; scanf("%d",&t); if(table.count(t)) { ans=max(ans,min(i-table[t],i-pre+1)); pre=max(pre,table[t]+1); } else ans=max(ans,i-pre+1); table[t]=i; } printf("%d\n",ans); } return 0; }
相关文章推荐
- 高效算法设计专项:UVa 10691
- 【高效算法设计——滑动窗口】UVa 11572 Unique Snowflakes
- 高效算法设计专项:UVa 10730
- 高效算法设计专项:UVa 10125
- 高效算法设计专项:UVa 10827
- 高效算法设计专项:UVa 10391
- 高效算法设计专项:UVa 10810
- 高效算法设计专项:UVa 10535
- 高效算法设计专项:UVa 11054
- 【高效算法设计——滑动窗口】 UVa 12174 Shuffle
- 【高效算法设计——等价转换】UVa 11054
- 【高效算法设计】UVa120 Stack of Flapjacks
- UVa 1210 (高效算法设计) Sum of Consecutive Prime Numbers
- 【高效算法设计——最大值最小问题】UVa 714 Coying Books
- [高效算法设计]Calculator conundrum Uva 11549
- 高效算法设计专项:LA 4726
- 【高效算法设计——二分法】UVa 1607 Gates
- 【高效算法设计——递归】 UVa 12627 Erratic Expansion
- 【高效算法设计——双向扫描】 UVa 1442 Cave
- ( 设计高效算法 ) 年龄排序 Age Sort Uva 11462