https://vjudge.net/problem/UVA-1121

题意:

给出一个正整数数列a,要求找出最短的连续的一个序列使得这个序列的所有数字之和大于等于S。

思路:

第一是由于序列都是正整数,所以他们的前缀和是递增的,就可以用二分搜索,但是我的二分是二分的个数,这个具体看代码。复杂度O(NlogN)。

 #include <stdio.h>
#include <string.h> int a[];
int s;
int n; bool meet(int k)
{
int sum = ; for (int i = ;i < k;i++)
sum += a[i]; if (sum >= s) return ; for (int i = k;i < n;i++)
{
sum -= a[i-k];
sum += a[i]; if (sum >= s) return ;
} return ;
} int main()
{
while (scanf("%d%d",&n,&s) != EOF)
{
for (int i = ;i < n;i++)
scanf("%d",&a[i]); int l = ,r = n; if (!meet(n))
{
printf("0\n"); continue;
} while (l < r)
{
int mid = (l + r) >> ; if (meet(mid)) r = mid;
else l = mid + ;
} while (r - > && meet(r-)) r--; printf("%d\n",r);
} return ;
}

第二个思路就是用尺取法,可以到达O(N)的复杂度。

具体就是设置一个起始位置start,然后end指针从第一个元素开始遍历,当sum[end] - sum[start] < s的时候,把end指针右移,当满足sum[end] - sum[start] >= s的时候,就把start指针向右移,然后更新ans的值。

复杂度的分析:由于start是一直递增的,然后它最多递增n次,所以复杂度是O(N)。

代码:

 #include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; int a[],b[]; int main()
{
int n,s; while (scanf("%d%d",&n,&s) != EOF)
{
for (int i = ;i <= n;i++) scanf("%d",&a[i]); b[] = ; for (int i = ;i <= n;i++) b[i] = b[i-] + a[i]; int start = ; int ans = n + ; for (int i = ;i <= n;i++)
{
if (b[i] - b[start] < s) continue; while (b[i] - b[start] >= s) start++; ans = min(ans,i - start + );
} if (ans == n + ) printf("%d\n",);
else printf("%d\n",ans);
} return ;
}

uva 1121 Subsequence的更多相关文章

  1. UVA之1121 - Subsequence

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/SunnyYoona/article/details/25840365 [题目] A sequence ...

  2. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  3. UVA 11404 五 Palindromic Subsequence

     Palindromic Subsequence Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu ...

  4. LPS UVA 11404 Palindromic Subsequence

    题目传送门 题意:求LPS (Longest Palidromic Subsequence) 最长回文子序列.和回文串不同,子序列是可以不连续的. 分析:1. 推荐->还有一种写法是用了LCS的 ...

  5. UVA 11404 Palindromic Subsequence

    Palindromic Subsequence Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA ...

  6. UVa 10405 & POJ 1458 Longest Common Subsequence

    求最长公共子序列LCS,用动态规划求解. UVa的字符串可能含有空格,开始用scanf("%s", s);就WA了一次...那就用gets吧,怪不得要一行放一个字符串呢. (本来想 ...

  7. 【UVA 11404】Palindromic Subsequence

    UVA 11404 我用了最暴力的做法:考虑\(dp[i][j]\)表示\(S[i..j]\)的最长回文子序列的长度以及字典序最小的那个. 然后转移的时候如下处理:首先\(dp[i][j]\)要取\( ...

  8. UVA 10405 Longest Common Subsequence

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=16&p ...

  9. UVA 10405 Longest Common Subsequence (dp + LCS)

    Problem C: Longest Common Subsequence Sequence 1: Sequence 2: Given two sequences of characters, pri ...

随机推荐

  1. crontab 各参数详解及如何查看日志记录

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt145 crontab各参数说明: crontab [-u user] [fi ...

  2. WCF(三)分布式事务

    最近在学WCF,所以有两个设想疑问(菜鸟多疑问): 如果有WCF服务A,WCF服务B,客户端调用WCF服务A插入一条数据,然后再调用服务B也插入一条数据,然而服务B出错了进行了回滚,服务A能不能也进行 ...

  3. VS2012启用angularjs智能提示Intelligence(转)

    1. 關閉正在執行的 Visual Studio 2012 2. 開啟檔案總管,並進入以下目錄: C:\Program Files (x86)\Microsoft Visual Studio 11.0 ...

  4. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解

    在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 led.bin ...

  5. [UWP]使用Writeable​Bitmap创建HSV色轮

    1. HSV 1.1 HSV的定义 HSV都是一种将RGB色彩模型中的点在圆柱坐标系中的表示法,这种表示法试图做到比RGB基于笛卡尔坐标系的几何结构更加直观.HSV即色相.饱和度.明度(英语:Hue, ...

  6. 串口数据缓存java版

    接触串口很久了,一直以来将都是将串口读取出来的数组转换成字符串通过string.contains()查找是否包涵目标数组,自己感觉low到爆,所以写了一个byte-buffer,测试还是蛮好用的.希望 ...

  7. 201521123063 《java程序设计》第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  8. 201521123081《java程序设计》 第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 参考资料:XMind ============================================== ...

  9. 201521123072《java程序设计》第十三周学习总结

    201521123072<java程序设计>第十三周学习总结 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 ...

  10. MySql导入导出数据方法

    导出全库备份到本地的目录 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 ...