博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 11536 - Smallest Sub-Array
阅读量:4073 次
发布时间:2019-05-25

本文共 1172 字,大约阅读时间需要 3 分钟。

题目大意:

给一个序列

X1 = 1

X2 = 2

X3 = 3

Xi = (Xi-1 + Xi-2 + Xi-3) % M + 1         for i = 4 to N

求一段最短的连续子序列,使得这个子序列包含正整数【1,k】

思路:

扫描一遍即可,用一个队列记录下【1,k】区间内的数的位置,再用一个变量count维护【1,k】内不重复数的个数。当count等于k时说明当前序列已经满足了要求,而队列头的数的位置就是起始位置。

算法复杂度O(n)

代码:

/* * UVa 11536 - Smallest Sub-Array  * */#include
#include
#include
#include
#include
#include
using namespace std;typedef long long int64;typedef pair
pii;const int INF = 0x3f3f3f3f;const int MAXN = 1000010;int n, m, k;int arr[MAXN];int cnt[MAXN];void init(){ arr[1] = 1; arr[2] = 2; arr[3] = 3; for(int i=4; i<=n; ++i) arr[i] = (arr[i-1]+arr[i-2]+arr[i-3])%m + 1; memset(cnt, 0, sizeof(cnt));}int main(){ int nCase, cas=1; scanf("%d", &nCase); while(nCase--){ scanf("%d%d%d", &n,&m,&k); init(); int minx = INF; int count=0; queue
Q; for(int i=1; i<=n; ++i){ if(arr[i]>=1 && arr[i]<=k){ Q.push(i); if(cnt[arr[i]]++ == 0){ ++count; } while(count == k){ int tmp = i - Q.front() + 1; minx = min(tmp, minx); int val = arr[Q.front()]; if(--cnt[val]==0){ --count; } Q.pop(); } } } printf("Case %d: ", cas++); if(minx == INF) puts("sequence nai"); else printf("%d\n", minx); } return 0; }

转载地址:http://gszni.baihongyu.com/

你可能感兴趣的文章
hd disk / disk raid / disk io / iops / iostat / iowait / iotop / iometer
查看>>
project ASP.NET
查看>>
db db2_monitorTool IBM Rational Performace Tester
查看>>
OS + Unix Aix telnet
查看>>
IBM Lotus
查看>>
Linux +Win LAMPP Tools XAMPP 1.7.3 / 5.6.3
查看>>
my read_university
查看>>
network manager
查看>>
OS + Linux Disk disk lvm / disk partition / disk mount / disk io
查看>>
RedHat + OS CPU、MEM、DISK
查看>>
net TCP/IP / TIME_WAIT / tcpip / iperf / cain
查看>>
webServer kzserver/1.0.0
查看>>
OS + Unix IBM Aix basic / topas / nmon / filemon / vmstat / iostat / sysstat/sar
查看>>
my ReadMap subway / metro / map / ditie / gaotie / traffic / jiaotong
查看>>
OS + Linux DNS Server Bind
查看>>
linux下安装django
查看>>
Android 解决TextView设置文本和富文本SpannableString自动换行留空白问题
查看>>
最完整的Java IO流学习总结
查看>>
Android开发中Button按钮绑定监听器的方式完全解析
查看>>
Android自定义View实现商品评价星星评分控件
查看>>