Bound Found

Time Limit: 5000MS Memory Limit: 65536K

Total Submissions: 5408 Accepted: 1735 Special Judge

Description

Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronautic and Space Administration (that must be going through a defiant phase: “But I want to use feet, not meters!”). Each signal seems to come in two parts: a sequence of n integer values and a non-negative integer t. We’ll not go into details, but researchers found out that a signal encodes two integer values. These can be found as the lower and upper bound of a subrange of the sequence whose absolute value of its sum is closest to t.

You are given the sequence of n integers and the non-negative target t. You are to find a non-empty range of the sequence (i.e. a continuous subsequence) and output its lower index l and its upper index u. The absolute value of the sum of the values of the sequence from the l-th to the u-th element (inclusive) must be at least as close to t as the absolute value of the sum of any other non-empty range.

Input

The input file contains several test cases. Each test case starts with two numbers n and k. Input is terminated by n=k=0. Otherwise, 1<=n<=100000 and there follow n integers with absolute values <=10000 which constitute the sequence. Then follow k queries for this sequence. Each query is a target t with 0<=t<=1000000000.

Output

For each query output 3 numbers on a line: some closest absolute sum and the lower and upper indices of some range where this absolute sum is achieved. Possible indices start with 1 and go up to n.

Sample Input

5 1

-10 -5 0 5 10

3

10 2

-9 8 -7 6 -5 4 -3 2 -1 0

5 11

15 2

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

15 100

0 0

Sample Output

5 4 4

5 2 8

9 1 1

15 1 15

15 1 15


解题心得:

  1. 给你一些列数,你选择一段连续的区间,区间总和的绝对值最接近给定的数,但是这些数可能是负数。
  2. 这个题主要的难点就是这些数可能是一个负数,有负数那么区间越长并不代表总和越大,这里就需要明确尺取法的两个特点
    • 第一个特点就是尺取必须是选择连续的一段区间。
    • 第二就是随着尺取长度的增加要有一个单调性,递增或者递减。
  3. 这个题明显不符合第二个特点随着区间长度的增加没有一个单调性,这个时候按照传统的尺取就没办法了。但是题目上并没有对于区间长度有什么要求,仅仅是要求总和绝对值和给定数相差最小,要求的是区间和,区间和可以从前缀和得到。这样就可以先得到前缀和,然后对于前缀和排序,这样就有了单调性,然后对于递增的前缀和用尺取法得最接近的给定数的区间。

#include <algorithm>
#include <stdio.h>
#include <climits> using namespace std;
const int maxn = 1e5 + 100; int t, n, m;
pair<int, int> p[maxn]; int main() {
while (scanf("%d%d", &n, &m) && n | m) {
p[0] = make_pair(0, 0);//要多插入一个为零的总和
for (int i = 1; i <= n; i++) {
int temp;
scanf("%d", &temp);
p[i] = make_pair(p[i - 1].first + temp, i);
}
sort(p, p + n + 1); while (m--) {
scanf("%d", &t);
int l, r, sum = INT_MAX, ans_l, ans_r, ans = INT_MAX;
l = 0;r = 1;
while(r <= n) {
int temp = p[r].first - p[l].first;
if(abs(temp - t) < ans) {
ans = abs(temp-t);
sum = temp;
ans_l = min(p[l].second,p[r].second);
ans_r = max(p[l].second,p[r].second);
}
if(temp < t) r++ ;
else l++;
if(l == r)
r++;
} printf("%d %d %d\n", sum, ans_l + 1, ans_r);
}
}
return 0;
}

POJ:2566-Bound Found(尺取变形好题)的更多相关文章

  1. POJ 2566 Bound Found 尺取 难度:1

    Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1651   Accepted: 544   Spec ...

  2. poj 2566 Bound Found 尺取法 变形

    Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2277   Accepted: 703   Spec ...

  3. poj 2566 Bound Found 尺取法

    一.首先介绍一下什么叫尺取 过程大致分为四步: 1.初始化左右端点,即先找到一个满足条件的序列. 2.在满足条件的基础上不断扩大右端点. 3.如果第二步无法满足条件则到第四步,否则更新结果. 4.扩大 ...

  4. poj 2566"Bound Found"(尺取法)

    传送门 参考资料: [1]:http://www.voidcn.com/article/p-huucvank-dv.html 题意: 题意就是找一个连续的子区间,使它的和的绝对值最接近target. ...

  5. POJ 2566 Bound Found(尺取法,前缀和)

    Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5207   Accepted: 1667   Spe ...

  6. poj2566尺取变形

    Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronaut ...

  7. poj 2566 Bound Found

    Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4384   Accepted: 1377   Spe ...

  8. Subsequence (POJ - 3061)(尺取思想)

    Problem A sequence of N positive integers (10 < N < 100 000), each of them less than or equal ...

  9. poj 2566 Bound Found(尺取法 好题)

    Description Signals of most probably extra-terrestrial origin have been received and digitalized by ...

随机推荐

  1. Cookie存储大小、个数限制

    一.浏览器允许每个域名所包含的cookie数: Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie. Firef ...

  2. 用代码初始化AE控件许可

    当AE二次开发与其他平台一起使用的时候,有时候会不方便加LicenseControl控件,需要用代码初始化许可: 在构造函数中初始化许可: public Form1() { InitializeCom ...

  3. Android 极光推送JPush---自定义提示音

    极光推送提供三种方法实现Notification通知 三方开发平台发送普通消息,客户端设置PushNotificationBuilder,实现基础的Notification通知 三方开放平台发送普通消 ...

  4. Web前端开发规范(二)

    3.HTML代码规范 .html文件必须存放在项目工程约定的目录中. .html文件的命名:以模块 + 功能的结合方式来命名,比如:newsList.html. 文档类型声明:HTML4中使用< ...

  5. Struts2_Global_Results_全局结果集

    struts.xml文件配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...

  6. Spark核心组件

    Spark核心组件 1.RDD resilient distributed dataset, 弹性分布式数据集.逻辑上的组件,是spark的基本抽象,代表不可变,分区化的元素集合,可以进行并行操作.该 ...

  7. JavaScript 获取 当前日期和三十天以前日期

    //获取当前日期 var myDate = new Date(); var nowY = myDate.getFullYear(); var nowM = myDate.getMonth()+1; v ...

  8. Uva 12169 不爽的裁判 模运算

    题目链接:https://vjudge.net/contest/156903#problem/B 题意: 有一个递推公式 : a,b都不是已知的,给出了 x1,x3,x5.... 求x2,x4,x6. ...

  9. iis 发布失败原因总结

    3篇文章 1. https://www.cnblogs.com/adzhouyang/p/7357086.html 2..https://blog.csdn.net/li_ser/article/de ...

  10. Java解析Excel工具类(兼容xls和xlsx)

    依赖jar <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml&l ...