poj2566 尺取法
2024-08-26 09:10:00
题意:
输入 n m 之后输入n个数
之后m个询问 对于每个询问 输入一个t 输出 三个数 ans l r 表示从l 到 r的所有数的和的绝对值最接近t 且输出这个和ans
思路:就是指针的移动。
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<limits.h>
using namespace std; pair<int,int>p[];
int n,m,t,num; void find(int x)
{
int i=,j=,ans=INT_MAX,temp,l,r,v;
while(j<=n && ans)
{
temp=p[j].first-p[i].first;
if(abs(temp-x)<=ans)
{
ans=abs(temp-x);
v=temp;
l=p[i].second;
r=p[j].second;
}
if(temp<x) j++;
if(temp>x) i++;
if(i==j) j++;
}
if(l>r)
{
int a=r;
r=l;
l=a;
}
printf("%d %d %d\n",v,l+,r);
} int main()
{
while(scanf("%d%d",&n,&m)== && (m+n))
{
int sum=;
p[]=make_pair(,);
for(int i=; i<=n; i++)
{
scanf("%d",&num);
sum+=num;
p[i]=make_pair(sum,i);
}
sort(p,p+n+);
while(m--)
{
scanf("%d",&t);
find(t);
}
}
return ;
}
最新文章
- EntityFramework 性能优化
- git/github学习笔记
- JAVA入门第二季 第一章 类和对象
- VB的判断语句和循环语句
- scikit-learn 机器学习工具包
- Velocity语法--转载
- 用fscanf()从文件取数据时,如何判断文件结束
- C++学习笔记之输入、输出和文件
- iOS开发——UI篇Swift篇&;UIActivityIndicatorView
- vi常用命令与设置(不断修改中)
- 关于sharepoint事件接收器中properties.AfterProperties[";";].Tostring()取值的问题。
- uboot源码解析
- DDD(领域驱动设计)理论结合实践
- [iOS Animation]-CALayer 图层树
- flask 分页
- respberry2b + android5.1
- Bootstrap 图片
- UI设计初学者教程:色彩基础知识
- R-CNN目标检测的selective search(SS算法)
- 使用像素单位设置 EXCEL 列宽或行高
热门文章
- nyoj_299_Matrix Power Series_矩阵快速幂
- 【动态规划】简单背包问题II
- BestCoder37 1001.Rikka with string 解题报告
- spring mvc配置完后实现下载功能
- EL表达式中fn函数 (转载)
- 【leetcode】Remove Element (easy)
- 安装Odoo9出现的could not execute command ";lessc";问题
- 【XLL 框架库函数】 debugPrintf
- 数据结构和算法 &ndash; 3.堆栈和队列
- Delphi面向对象编程