C - Bound Found

这篇具有很好参考价值的文章主要介绍了C - Bound Found。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

Inputcopy Outputcopy
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
5 4 4
5 2 8
9 1 1
15 1 15
15 1 15
#include<iostream>
#include<algorithm>
#include<map>
#include<cstring>
#include<vector>
#include<cmath>
#include<cstdlib>

using namespace std;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
int n, k;
vector<pair<int, int>> b;


struct node {
	int num;  //数值
	int id;   //位置
	int sum;  //前缀和
}a[N];

bool cmp(node a, node b)
{
	return a.sum < b.sum;
}

int main()
{
	while (cin>>n>>k && (n || k))
	{
		//读入数据
		a[0].num = a[0].id = a[0].sum = 0; 
		for (int i = 1; i <= n; i++)
		{
			cin >> a[i].num;
			a[i].id = i;
			a[i].sum = a[i - 1].sum + a[i].num;
		}

		sort(a, a + n + 1, cmp);  //按照前缀和从小到大排序
		int t;
		while (k--)
		{
			cin >> t;
			int ans = 0, ansl = 0, ansr = 0;
			int left = 0, right = 1;
			int minsum = INF,temp;
			while (left <= n && right <= n)
			{
				temp = abs(a[right].sum - a[left].sum);  //每次计算从l到r的前缀和
				if (abs(temp - t) < minsum) //如果temp与t的距离更,则更新最小的距离minsum,左端点和右端点
				{
					minsum = abs(temp - t);
					ans = temp;
					ansl = a[left].id < a[right].id ? a[left].id + 1 : a[right].id + 1;  //左端点要加一,不然案例一的答案就不是4 4,而是3 4
					ansr = a[left].id < a[right].id ? a[right].id : a[left].id;
				}

				if (temp < t) right++;  //如果temp小于t,就往大的找,尽量降低最小距离
				else if (temp > t) left++;//道理同上
				else break;

				if (left == right) right++;
			}

			cout << ans << " " << ansl << " " << ansr << endl;
		}
	}

	return 0;
}

 文章来源地址https://www.toymoban.com/news/detail-709666.html

到了这里,关于C - Bound Found的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mybatis plus报错:Invalid bound statement (not found)

    有的同学,在搭建mybatis plus项目时,遇到Invalid bound statement (not found)的问题,实质上是mapper接口和mapper.xml没有映射起来。 这种情况,常见的问题有以下几个: 1、mapper.xml 里面的 namespace与实际的mapper类路径不一致。 这个有个快捷的检测办法就是按住ctrl键,然后点击namespace里

    2024年02月04日
    浏览(51)
  • Invalid bound statement (not found)出现原因和解决方法

    出现的原因:mapper接口和mapper.xml文件没有映射起来。 解决方法: 1、 .mapper.xml中的namespace和实际的mapper文件是否一致 2、 检查mapper接口中的方法名与mapper.xml文件中的id是否一致 推荐大家去下载MyBatisX插件,可以自动实现mapper接口到mapper.xml之间的映射,既能提高效率,又能避

    2024年02月11日
    浏览(56)
  • Invalid bound statement (not found)的原因以及解决方法

    相信我们在学习Mybatis的时候都出现过 Invalid bound statement (not found) 这个错误,一般由以下几种可能导致这个错误 例如: mapper:  对应的mapper.xml 这里建议小伙伴们下载一个插件,方便查看你的xml是否对应了你想对应的mapper接口 有了这个插件,你的接口mapper和对应的mapper.xml都

    2024年02月15日
    浏览(45)
  • 出现Invalid bound statement (not found)问题的解决办法(已解决)

    今天在写项目时出现了 Invalid bound statement (not found):xxxx 这个问题,网上找了很多博客都不行,最后修改了配置文件解决了问题,借此将此类问题常见的解决办法汇总一下。 1.mapper接口中的方法名和mapper.xml中的id标签不一致 推荐大家装MyBatisX这个插件,这样如果mapper中的方法名

    2023年04月26日
    浏览(43)
  • Mybatis异常Invalid bound statement (not found)原因之Mapper文件配置不匹配

    模拟登录操作 网页提示服务器代码错误 后端显示无法找到Mapper中对应的方法 原因 相信我们在学习Mybatis的时候都出现过 Invalid bound statement (not found) 这个错误, 一般由以下几种可能导致这个错误 第一种:mapper.xml中的namespace和实际的mapper文件不一致 第二种:mapper.xml中的id名与

    2024年02月14日
    浏览(42)
  • myBatis plus 调用基本方法(insert update.... ) Invalid bound statement (not found)

    直接调用BaseMapper 或者 是Iservice 里面的方法报如下错,大概率是依赖版本冲突 我的依赖版本如下,解决了这个问题 “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 错误通常表示在 MyBatis 中找不到有效的绑定语句。 这个错误可能有以下几个可能的原因: SQL

    2024年02月13日
    浏览(58)
  • 【报错解决】org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

     对于这种错误,一般在于mapper接口与xml文件无法绑定。 解决方案: 1.检查xml文件名是否与mapper接口名一致。 2.检查xml文件中namespace是否与mapper接口的全类名一致。(按住ctrl点击能跳转就没问题) 3.是否在主启动类上标注了@MapperScan(“mapper接口所在包的全包名”)或在map

    2024年02月15日
    浏览(68)
  • 解决Mybatis报错并分析原因:Invalid bound statement (not found): com.xxx.mapper.xxx

    今天同事在Mapper.xml自定义写了一个SQL,但是调用mapper的时候缺报错 我大概还原下场景 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.wyh.mapper.UserMapper.findByIDWYH 具体如下 一开始我觉得是不是没有扫描到mapper包,但是看了启动类,确实也配注解了呀 然后我又想 是

    2023年04月08日
    浏览(42)
  • org.apache.ibatis.binding.BindingException:Invalid bound statement (not found)绑定异常出现原因和解决方法

    绑定异常,(其实出现这个问题实质就是mapper接口和mapper.xml文件没有映射起来。) 异常提示信息如下: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) :cn.tedu.csmall.server.mapper.BrandMapper.insert 写XML文件时一定要注意注意再注意, 因为报错提示会指定到XML中 出现此异常

    2024年02月06日
    浏览(40)
  • 快速认识,前端必学编程语言:JavaScript

    JavaScript是构建Web应用必学的一门编程语言,也是最受开发者欢迎的热门语言之一。所以,如果您还不知道JavaScript的用处、特点的话,赶紧补充一下这块基础知识。 JavaScript 是一种高级、单线程、垃圾收集、解释或即时编译、基于原型、多范式、动态语言,具有非阻塞事件循

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包