1044. Shopping in Mars (25)
分析:
考察二分,简单模拟会超时,优化后时间正好,但二分速度快些,注意以下几点:
(1):如果一个序列D1 ... Dn,如果我们计算Di到Dj的和, 那么我们可以计算D1到Dj的和sum1,D1到Di的和sum2, 然后结果就是sum1 - sum2;
(2): 那么我们二分则要搜索的就是m + sum[i]的值。
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <cctype>
#include <iomanip>
#include <cmath>
#include <map> using namespace std; const int Max_Int = 0x7fffffff;
const int Max_required = ; int sum[Max_required];
int value[Max_required]; struct Node
{
int start;
int end;
};
vector<Node> V_node; int binary_find(int target, int n)
{
int low = , high = n; while (low <= high)
{
int mid = (low + high) >> ;
if (sum[mid] == target)
return mid;
else if (sum[mid] < target)
low = mid + ;
else high = mid - ;
}
return low;
} int main()
{
int n, m;
while (scanf("%d%d", &n, &m) != EOF)
{
for (int i = ; i <= n; i++)
{
scanf("%d", &value[i]);
sum[i] = sum[i - ] + value[i];
} int Min = Max_Int;
for (int i = ; i <= n; i++)
{
int target = m + sum[i];
int res = binary_find(target, n);
//printf("res = %d\n", res);
if (sum[res] - sum[i] - m >= && sum[res] - sum[i] - m <= Min)
{
if (sum[res] - sum[i] - m < Min)
{
V_node.clear();
Min = sum[res] - sum[i] - m;
Node node;
node.start = i + ;
node.end = res;
V_node.push_back(node);
}
else if (sum[res] - sum[i] - m == Min)
{
Node node;
node.start = i + ;
node.end = res;
V_node.push_back(node);
} }
} for (int i = ; i < V_node.size(); i++)
printf("%d-%d\n", V_node[i].start, V_node[i].end);
}
return ;
}
1044. Shopping in Mars (25)的更多相关文章
- PAT 甲级 1044 Shopping in Mars (25 分)(滑动窗口,尺取法,也可二分)
1044 Shopping in Mars (25 分) Shopping in Mars is quite a different experience. The Mars people pay ...
- 1044 Shopping in Mars (25 分)
Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diam ...
- PAT Advanced 1044 Shopping in Mars (25) [⼆分查找]
题目 Shopping in Mars is quite a diferent experience. The Mars people pay by chained diamonds. Each di ...
- 1044 Shopping in Mars (25分)(二分查找)
Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diam ...
- PAT (Advanced Level) 1044. Shopping in Mars (25)
双指针. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- PAT甲题题解-1044. Shopping in Mars (25)-水题
n,m然后给出n个数让你求所有存在的区间[l,r],使得a[l]~a[r]的和为m并且按l的大小顺序输出对应区间.如果不存在和为m的区间段,则输出a[l]~a[r]-m最小的区间段方案. 如果两层fo ...
- 【PAT甲级】1044 Shopping in Mars (25 分)(前缀和,双指针)
题意: 输入一个正整数N和M(N<=1e5,M<=1e8),接下来输入N个正整数(<=1e3),按照升序输出"i-j",i~j的和等于M或者是最小的大于M的数段. ...
- pat1044. Shopping in Mars (25)
1044. Shopping in Mars (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Shop ...
- 1044 Shopping in Mars (25 分)
1044 Shopping in Mars (25 分) Shopping in Mars is quite a different experience. The Mars people pay b ...
随机推荐
- 封装实现一个自己的tabbar
实现效果:
- bootstrap-面包屑和分页
<div class="container"> <div class="row"> <ul class="breadcr ...
- l类型转换错误ClassCastException
出现问题原因story中参数写错:
- js json 与字符串 转换过程由于书写不统一规范引发的一个问题
对于两个字符串: 字符串1:{title:{},tooltip:{trigger:"axis"},legend:{data:["新关注人数"]},calcula ...
- Django model中常见Field types , Field options
AutoField :自增,数据库 BooleanField:布尔型 CharField:字符型 DateField:日期,datetime.date类的实例.有两个常用的option,auto_no ...
- 2016-06-13:NAT原理
参考资料 udp打洞( NAT traversal )的方法介绍 UDP打洞原理
- Android IOS WebRTC 音视频开发总结(七一)-- H265/H264有何不同
本文整理自自网络,非原创,喜欢相关文章请关注我们的微信公众号:blackerteam H.265 H.265是ITU-TVCEG继H.264之后所制定的新的视频编码标准.H.265标准围绕着现有的视频 ...
- SQL笔记-第六章,索引与约束
一.索引 CREATE INDEX 索引名 ON 表名(字段1, 字段2,……字段n) CREATE INDEX idx_person_nameage ON T_Person(FName,FAge) ...
- 学习java第8天
今天主要是学习了多态,多态指同一个对象在不同时刻体现出来的不同状态.多态的前提:有继承或者实现关系.有方法重写.有父类或者父接口引用指向子类对象. class Fu {} class Zi ext ...
- ubuntu mysql emma中文乱码问题解决
ubuntu mysql emma中文乱码问题解决 emma默认用apt-get 安装的话,emma是不支持中文的,配置文件或直接修改emma程序源文件(python). apt-get安装emma ...