POJ 3061 Subsequence(尺取法)
题目链接: 传送门
Subsequence
- Time Limit: 1000MS Memory Limit: 65536K
- Time Limit: 1000MS Memory Limit: 65536K
题目描述
- 给定长度为n的数列整数以及整数S。求出总和不小于S的连续子序列的长度的最小值。如果解不存在,则输出0。
思路
O(nlogn)算法
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
int N,S,i;
int ans[100005] = {0},sum[100005] = {0};
scanf("%d%d",&N,&S);
int res = N;
for (i = 0;i < N;i++)
{
scanf("%d",&ans[i]);
sum[i + 1] = sum[i] + ans[i];
}
if (sum[i] < S)
{
res = 0;
}
else
{
for (i = 0;sum[i] + S < sum[N];i++)
{
int tmp = lower_bound(sum + i,sum + N,sum[i] + S) - sum;
res = min(res,tmp - i);
}
}
printf("%d\n",res);
}
return 0;
}
O(n)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
int N,S;
int ans[100005] = {0};
scanf("%d%d",&N,&S);
for (int i = 0;i < N;i++)
{
scanf("%d",&ans[i]);
}
int res = N + 1;
int sum = 0,t = 0,s = 0;
for (;;)
{
while (t < N && sum < S)
{
sum += ans[t++];
}
if (sum < S)
{
break;
}
res = min(res,t - s);
sum -= ans[s++];
}
if (res > N)
{
res = 0;
}
printf("%d\n",res);
}
return 0;
}
POJ 3061 Subsequence(尺取法)的更多相关文章
- POJ 3061 Subsequence 尺取法 POJ 3320 Jessica's Reading Problem map+set+尺取法
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13955 Accepted: 5896 Desc ...
- POJ 3061 Subsequence(尺取法)
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18145 Accepted: 7751 Desc ...
- POJ 3061 Subsequence 尺取法
转自博客:http://blog.chinaunix.net/uid-24922718-id-4848418.html 尺取法就是两个指针表示区间[l,r]的开始与结束 然后根据题目来将端点移动,是一 ...
- POJ 3061 Subsequence 尺取法,一个屌屌的O(n)算法
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9050 Accepted: 3604 Descr ...
- poj 3061 题解(尺取法|二分
题意 $ T $ 组数据,每组数据给一个长度 $ N $ 的序列,要求一段连续的子序列的和大于 $ S $,问子序列最小长度为多少. 输入样例 2 10 15 5 1 3 5 10 7 4 9 2 8 ...
- POJ 3061 Subsequence 尺取
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14698 Accepted: 6205 Desc ...
- POJ 3061 Subsequence 二分或者尺取法
http://poj.org/problem?id=3061 题目大意: 给定长度为n的整列整数a[0],a[1],--a[n-1],以及整数S,求出总和不小于S的连续子序列的长度的最小值. 思路: ...
- POJ 3061 Subsequence ( 尺取法)
题目链接 Description A sequence of N positive integers (10 < N < 100 000), each of them less than ...
- 题解报告:poj 3061 Subsequence(前缀+二分or尺取法)
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...
- POJ 3061 Subsequence【二分答案】||【尺取法】
<题目链接> 题目大意: 给你一段长度为n的整数序列,并且给出一个整数S,问你这段序列中区间之和大于等于S的最短区间长度是多少. 解题分析:本题可以用二分答案做,先求出前缀和,然后枚举区间 ...
随机推荐
- sql server 创建只读帐号
有时候为了方便查询一下数据,会创建个只读帐号,以免误写sql语句改了数据 步骤:用sa帐号连接后,安全性--登录名--新建 输入要新建的帐号密码,在服务器角色里面单勾一个public 在 用户映射里面 ...
- Android Studio单元测试入门
Android Studio单元测试入门 通常在开发Android app的时候经常会写一些小函数并验证它是否运行正确,通常做法我们是把这个函数放到某个界面(Activity上)执行一下,运行整个工程 ...
- 学习SQLite之路(四)
20160621 更新 参考: http://www.runoob.com/sqlite/sqlite-tutorial.html 1. SQLite alter命令:不通过执行一个完整的转储和数 ...
- 遍历Arraylist的方法:
遍历Arraylist的几种方法: Iterator it1 = list.iterator(); while(it1.hasNext()){ System.out ...
- JavaScript学习笔记- 省市级联效果
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- background-position 50% 50%是如何计算的
background-position:value1 value2 value1和value2的值可以值绝对值也可以是百分数,大部分值都很好理解,但是50% 50%这两个值是如何计算的呢? 图片水平和 ...
- Android开发之SlidingMenu开源项目的使用和问题
一.关于如何导入lib 第一步:New Module 点击+: 第二步:选择Import Eclipse ADT Project: 第三步:选择你想引入的lib文件,选择完成后,会开始编译你添加的项 ...
- 关于最近折腾的ubuntu12.10
win7旗舰正版up1 UltraISO + ubuntu-12.10-desktop-i386.iso + 4GKingston = 启动U盘 USB HDD 启动 进入ubuntu桌面,安装,磁盘 ...
- python环境搭建-在Windows上安装python3.5.2
在Windows上安装Python3.5.2 首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.5.2对应的64位安装程序或32位安装程序(网速慢的同学 ...
- Beta版冲刺Day1
会议讨论: 628: 已经成功实现了文件的上传功能,但是按钮的布局有点不好看.未完成的功能有:修改老师信息时候弹出小窗口进行修改. 601: 目前还在解决剩下的问题,比如将 ...