1044 Shopping in Mars
这题我写了两个二分函数。
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相关推荐
- 1044 Shopping in Mars(柳神39行代码+详细注释)
分数 25 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 Shopping in Mars is quite a different experience. The Mars pe ...
- 【题意分析】1044 Shopping in Mars (25 分)【滑动窗口】
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Shopping in Mars is quite a different experience. The Mars people ...
- 1044 Shopping in Mars(二分法)
这类题目归结于常用技巧与算法,有很鲜明的套路,重在理解其规则,通常写起来不算太复杂. 题目描述: 题目大意: 题目意思较为好理解,但解决思路较为难想. 大致思路: 这道题有两个关键点,一是在接收输入的 ...
- [PAT A1044]Shopping in Mars
[PAT A1044]Shopping in Mars 题目描述 1044 Shopping in Mars (25 分)Shopping in Mars is quite a different e ...
- PAT甲级题目翻译+答案 AcWing(基础算法与数据结构)
1029 Median (25 分) 题意 : median中位数 给两个升序的序列,要求它们两个合并后的中位数 思路 : 双指针 语法 : long int #include <iostrea ...
- 【最新合集】PAT甲级最优题解(题解+解析+代码)
以下每道题均是笔者多方对比后, 思考整理得到的最优代码,欢迎交流! 共同成长哇.可以和博主比拼一下谁刷的更快~ 欢迎收藏.欢迎来玩儿 PAT题解目录 题号 标题 题解 分类 使用算法 1001 A+B ...
- c语言分蛋糕均匀正方形,分蛋糕(C - 二分查找)
分蛋糕 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/C Description My birthd ...
- PAT甲级训练合集(1-70)
本章题解跳转 考点 P1001 数字的数组表示和处理 P1002 多项式的数组表示和处理 P1003 深度优先搜素 P1004 深度优先搜素 P1005 哈希表 P1006 P1007 数组子区间求和 ...
- 刷PAT甲级的各题思路、细节以及遇到的问题记录
1001 A+B Format (20分) 因为一定会用到字符串,而string非常好用,但是用的时候一定要注意不能越界访问,否则会在运行时出现abort() has been called. 100 ...
最新文章
- ASP.NET MVC和jQuery DataTable整合
- 笔记3——C++类的一些特性
- 大爱jQuery,10美女模特有用jQuery/CSS3插入(集成点免费下载)
- k8s部署tomcat及web应用_k8s部署tomcat的yaml文件
- 【离散数学中的数据结构与算法】四 加法法则与乘法法则
- 十进制转换为16进制
- 火山引擎正式发布大数据研发治理套件
- 计算机组成原理——总线
- 结构梁配筋最牛插件_牛肉食用指南(五):日式烧肉的由来,各部位怎么烤最好吃?...
- 苹果笔记本摄像头黑屏怎么回事
- Android性能优化系列之App启动优化
- vba 关闭屏幕刷新
- cast 和convert和concat详解以及mysql和sqlserver兼容问题
- 一线城市上海的户口有多好?
- 快速学习nodejs系列:微信公众号开发一之环境准备
- codevs1013 求先序排列 string黑科技[三星]
- 串口通信协议示例与分析
- 【阅读笔记】这本书可以让你戒烟
- c语言图书管理系统解析,基于C语言的图书管理系统的设计与实现解析.doc
- Nginx 又一牛X的功能!流量拷贝
热门文章
- Properties类读写配置文件
- ZooKeeper学习笔记1-----------安装启动
- Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)
- 使用inno setup打包程序完整脚本(.net框架检测,重复安装检测)
- 一个苹果证书供多台电脑开发使用——导出p12文件
- Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
- Lintcode108 Palindrome Partitioning || solution 题解
- 【No.5 类型转换导致的错误】
- thinkphp-条件判断-范围判断-range标签
- 创建第一个freemarker