这题我写了两个二分函数。

BS借用的模板是找到第一个大于等于总价的商品下标,然后返回的是钻石价值和减去商品总价,通过遍历来得到最小的差值,注意遍历的最后一个数字的时候可能会返回负值,所以只有当返回值大于等于0才可以用来竞争最小差值。

得到了最小差值。BS2函数的模板是找到符合固定条件的商品下标,当然可能找不到,此时返回-1。

AC代码

#include<cstdio>
#include<iostream>
#include<set>
#include<vector>
#include<map>using namespace std;const int SUP = 100000000;
const int maxn = 100010;vector<pair<int,int> > ans;
int n,T;
int M[maxn];
int C[maxn];int getT(int begin,int end){return C[end]-C[begin]+M[begin];
}int BS(int begin,int l,int r){int mid,dif;while(l<r){mid = (l+r)/2;if(getT(begin,mid)>=T){r = mid;}else{l = mid+1;}}dif = getT(begin,l) - T;return dif;
} int BS2(int begin,int l,int r,int dif){int mid;while(l<=r){mid = (l+r)/2;if(getT(begin,mid)<T+dif){l = mid+1;}else if(getT(begin,mid)>T+dif){r = mid-1;}else return mid;}return -1;
}int main(){cin>>n>>T;C[0] = 0;for(int i=1;i<=n;i++){cin>>M[i];C[i] = C[i-1]+M[i];}int minDif = SUP;for(int i=1;i<=n;i++){int dif = BS(i,i,n);if(dif>=0){minDif = min(minDif,dif);}}
//  printf("minDif = %d\n",minDif); for(int i=1;i<=n;i++){int j = BS2(i,i,n,minDif);if(j!=-1)printf("%d-%d\n",i,j);}return 0;
}

1044 Shopping in Mars相关推荐

  1. 1044 Shopping in Mars(柳神39行代码+详细注释)

    分数 25 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 Shopping in Mars is quite a different experience. The Mars pe ...

  2. 【题意分析】1044 Shopping in Mars (25 分)【滑动窗口】

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Shopping in Mars is quite a different experience. The Mars people ...

  3. 1044 Shopping in Mars(二分法)

    这类题目归结于常用技巧与算法,有很鲜明的套路,重在理解其规则,通常写起来不算太复杂. 题目描述: 题目大意: 题目意思较为好理解,但解决思路较为难想. 大致思路: 这道题有两个关键点,一是在接收输入的 ...

  4. [PAT A1044]Shopping in Mars

    [PAT A1044]Shopping in Mars 题目描述 1044 Shopping in Mars (25 分)Shopping in Mars is quite a different e ...

  5. PAT甲级题目翻译+答案 AcWing(基础算法与数据结构)

    1029 Median (25 分) 题意 : median中位数 给两个升序的序列,要求它们两个合并后的中位数 思路 : 双指针 语法 : long int #include <iostrea ...

  6. 【最新合集】PAT甲级最优题解(题解+解析+代码)

    以下每道题均是笔者多方对比后, 思考整理得到的最优代码,欢迎交流! 共同成长哇.可以和博主比拼一下谁刷的更快~ 欢迎收藏.欢迎来玩儿 PAT题解目录 题号 标题 题解 分类 使用算法 1001 A+B ...

  7. c语言分蛋糕均匀正方形,分蛋糕(C - 二分查找)

    分蛋糕 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/C Description My birthd ...

  8. PAT甲级训练合集(1-70)

    本章题解跳转 考点 P1001 数字的数组表示和处理 P1002 多项式的数组表示和处理 P1003 深度优先搜素 P1004 深度优先搜素 P1005 哈希表 P1006 P1007 数组子区间求和 ...

  9. 刷PAT甲级的各题思路、细节以及遇到的问题记录

    1001 A+B Format (20分) 因为一定会用到字符串,而string非常好用,但是用的时候一定要注意不能越界访问,否则会在运行时出现abort() has been called. 100 ...

最新文章

  1. ASP.NET MVC和jQuery DataTable整合
  2. 笔记3——C++类的一些特性
  3. 大爱jQuery,10美女模特有用jQuery/CSS3插入(集成点免费下载)
  4. k8s部署tomcat及web应用_k8s部署tomcat的yaml文件
  5. 【离散数学中的数据结构与算法】四 加法法则与乘法法则
  6. 十进制转换为16进制
  7. 火山引擎正式发布大数据研发治理套件
  8. 计算机组成原理——总线
  9. 结构梁配筋最牛插件_牛肉食用指南(五):日式烧肉的由来,各部位怎么烤最好吃?...
  10. 苹果笔记本摄像头黑屏怎么回事
  11. Android性能优化系列之App启动优化
  12. vba 关闭屏幕刷新
  13. cast 和convert和concat详解以及mysql和sqlserver兼容问题
  14. 一线城市上海的户口有多好?
  15. 快速学习nodejs系列:微信公众号开发一之环境准备
  16. codevs1013 求先序排列 string黑科技[三星]
  17. 串口通信协议示例与分析
  18. 【阅读笔记】这本书可以让你戒烟
  19. c语言图书管理系统解析,基于C语言的图书管理系统的设计与实现解析.doc
  20. Nginx 又一牛X的功能!流量拷贝

热门文章

  1. Properties类读写配置文件
  2. ZooKeeper学习笔记1-----------安装启动
  3. Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)
  4. 使用inno setup打包程序完整脚本(.net框架检测,重复安装检测)
  5. 一个苹果证书供多台电脑开发使用——导出p12文件
  6. Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
  7. Lintcode108 Palindrome Partitioning || solution 题解
  8. 【No.5 类型转换导致的错误】
  9. thinkphp-条件判断-范围判断-range标签
  10. 创建第一个freemarker