POJ 3320 Jessica's Reading Problem(尺取法)
2016-05-12 21:21
357 查看
题意:给你一个连续的串,找出一个连续且包含所有出现的数字的子串,求这个子串最短为多少。
分析:尺取法,先得出出现的不同数字的个数np,然后从头开始先选出等于np的子序列,然后减去该子序列左边的值,减去后如果还是等于np,继续减去左边的值,如果小于np了,则向右加,直到再次达到np.
类似题POJ
3061 - Subsequence,http://blog.csdn.net/itaskyou/article/details/51387443
分析:尺取法,先得出出现的不同数字的个数np,然后从头开始先选出等于np的子序列,然后减去该子序列左边的值,减去后如果还是等于np,继续减去左边的值,如果小于np了,则向右加,直到再次达到np.
类似题POJ
3061 - Subsequence,http://blog.csdn.net/itaskyou/article/details/51387443
#include <iostream> #include<cstdio> #include<map> using namespace std; #define N 1000005 int a ; map<int ,int >ma; int main() { int n; while(~scanf("%d",&n)) { ma.clear(); for(int i=0;i<n;i++) { scanf("%d",&a[i]); ma[a[i]]=1; } int np=ma.size(); ma.clear(); int num=0,s=0,t=0,ans=n; while(1) { while(t<n&&num<np) { if(ma[a[t]]==0) { num++; } ma[a[t]]++; t++; } if(num<np) break; ans=min(ans,t-s); ma[a[s]]--; if(ma[a[s]]==0) { num--; } s++; } printf("%d\n",ans); } return 0; }
相关文章推荐
- 【C++】:C++ STL中的map 详解
- (OK) NS-3—LXC-(Docker)—MANET——HOWTO Use Linux Containers to set up virtual networks
- Redis持久化机制
- jmeter笔记8
- 实验三 进程调度模拟程序
- Best Time to Buy and Sell Stock
- Android Studio SVN 使用方法
- centos下安装jdk1.7
- 操作系统 实验三、进程调度模拟程序
- Android 学习资料
- maven工程打包成runnable的jar包,拷贝资源和依赖jar包
- Synchronization, Part 8: Ring Buffer Example
- Enable Bootcamp to install Windows from usb for MAC
- 第10、 11 周--阅读程序1
- 25个经典的Spring面试问答
- String StringBuffer与StringBuilder的区别
- 今天碰到一个问题,怎么限制用户在固定宽度的input输入框里输入的长度,由此涉猎到了maxlength属性和size属性以及它们的区别。
- Unity3D射线
- Android热身:通过网络获取资源并更新UI组件
- java多线程-线程同步