【51Nod - 1094】和为k的连续区间 (前缀和,二分查找)
题干:
一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间i,ji,j,(1 <= i <= j <= n),使得aii + ... + ajj = k。
Input
第1行:2个数N,K。N为数列的长度。K为需要求的和。(2 <= N <= 10000,-10^9 <= K <= 10^9)
第2 - N + 1行:Aii(-10^9 <= Aii <= 10^9)。
Output
如果没有这样的序列输出No Solution。
输出2个数i, j,分别是区间的起始和结束位置。如果存在多个,输出i最小的。如果i相等,输出j最小的。
Sample Input
6 10
1
2
3
4
5
6
Sample Output
1 4
解题报告:
不得不说,不是数据水,而是确实o(n^2)的做法可解。不过其实可以nlogn的,不解释了、、、
AC代码:
#include<iostream>
using namespace std;
long long a[10000 + 5];
long long sum[10000 + 5];
int main()
{long long n,k;scanf("%lld %lld",&n,&k);for(int i = 1; i<=n; i++) {scanf("%lld",&a[i]);sum[i]=sum[i-1]+a[i];}
// for(int i = 0 ;i<n; i++) {
// printf("%d ",sum[i]);
// }for(int i = 1; i<=n; i++) {for(int j = i; j<=n; j++) {if(sum[j]-sum[i-1]==k) {printf("%lld %lld\n",i,j);return 0 ;}}}printf("No Solution\n");return 0 ;
}
【51Nod - 1094】和为k的连续区间 (前缀和,二分查找)相关推荐
- 209 长度最小的子数组(前缀和+二分查找、滑动窗口)
1. 问题描述: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的子数组,返回 0. 示例: 输入:s = ...
- LeetCode 528. 按权重随机选择(前缀和+二分查找)
文章目录 1. 题目 2. 解题 1. 题目 给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 ...
- LeetCode 497. 非重叠矩形中的随机点(前缀和+二分查找)
文章目录 1. 题目 2. 解题 1. 题目 给定一个非重叠轴对齐矩形的列表 rects,写一个函数 pick 随机均匀地选取矩形覆盖的空间中的整数点. 提示: 整数点是具有整数坐标的点. 矩形周边上 ...
- LeetCode 2302. 统计得分小于 K 的子数组数目(前缀和+二分查找)
文章目录 1. 题目 2. 解题 1. 题目 一个数组的 分数 定义为数组之和 乘以 数组的长度. 比方说,[1, 2, 3, 4, 5] 的分数为 (1 + 2 + 3 + 4 + 5) * 5 = ...
- [Leedcode][JAVA][第209题][长度最小的子数组][滑动窗口][前缀和][二分查找][双指针]
[问题描述][中等] 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的连续子数组,返回 0.示例: 输入: ...
- LeetCode 2040. 两个有序数组的第 K 小乘积(嵌套二分查找)
文章目录 1. 题目 2. 解题 1. 题目 给你两个 从小到大排好序 且下标从 0 开始的整数数组 nums1 和 nums2 以及一个整数 k ,请你返回第 k (从 1 开始编号)小的 nums ...
- LeetCode 1712. 将数组分成三个子数组的方案数(前缀和 + 二分查找)
文章目录 1. 题目 2. 解题 221 / 3117,前7.1% 574 / 9692,前 5.9% 周赛前2题如下: LeetCode 5641. 卡车上的最大单元数(排序,模拟) LeetCod ...
- LeetCode 668. 乘法表中第k小的数(二分查找)
文章目录 1. 题目 2. 解题 1. 题目 几乎每一个人都用 乘法表.但是你能在乘法表中快速找到第k小的数字吗? 给定高度m .宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k ...
- LeetCode 378. 有序矩阵中第K小的元素(二分查找)
文章目录 1. 题目 2. 解题 2.1 暴力法 2.2 二分查找 1. 题目 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素. 请注意,它是排序后的第k小元素,而 ...
- LeetCode-378.有序矩阵中第k小的元素、二分查找
给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素.请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素.示例:matrix = [ [ 1, 5, 9] ...
最新文章
- 运行hadoop自带的wordcount例子
- 239 Sliding Window Maximum 滑动窗口最大值
- 在Windows上启用LDAPs
- vue3.0中使用计算属性时报错
- paho.mqtt.embedded-c-master c语言版本架构
- 第四期 | 带学斯坦福CS224n自然语言处理课+带打全球Kaggle比赛(文末重金招募老师!)...
- linux 查找py文件命令_在 Linux 中如何从命令行查找 VirtualBox 版本
- NOIP模拟测试24「star way to hevaen·lost my music」
- 软件测试基础:MantisBT的安装配置及使用——BUG管理工具
- 力扣203,移除链表元素(JavaScript)
- 领克车机2.0安装 app 方法,亲测有效
- 华为交换机命令基础入门学习,菜鸟也能看得懂!
- 洞烛幽微系列 之 梯度 散度 旋度
- Word中删除空白页的4种方法
- RAR压缩包有密码怎么办
- 数据的结构分类:结构化数据,半结构化数据以及非结构化数据
- 单例模式 饿汉式与懒汉式
- swoole.so: undefined symbol: _zval_ptr_dtor
- html自定义图例,自定义 highcharts 图例之 symbol
- windows配置静态路由表
热门文章
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第29篇]什么是UF-CMA数字签名的定义?
- 微信在计算机基础中的辅助作用,基于微信课后辅导在计算机基础教学中应用.doc...
- 客户端配置_交换机作为STelnet客户端登录其他设备配置示例
- 获取弹出的窗口_Win7系统如何获取设置everyone权限的问题
- linux桌面旋转了180度,[多图]回顾每一款默认Ubuntu壁纸
- ddns客户端_DDNS哪家最方便?试试看Mikrotik的ROS!
- ArcGIS改变数据集或要素类的的坐标系(投影)
- android ui状态栏高度,Android--状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels...
- 英伟达_如何超越英伟达?
- MFC 多文档源码分析1