石油大 金币 二分答案
文章目录
- 题目描述
- 输入
- 数据范围
- 输出
- 想法
- 参考
- 实现
题目描述
乔治在梦中来到了一个神奇部落,这个部落的神树具有奇特的功能:对于每一位新朋友,都会获赠金币,而且金币的数量会随时间的延续而增加:
第1周,每天1枚金币;
第2周,每天2枚金币;
第3周,每天3枚金币;……
请问:至少多少天,乔治的金币数量达到n枚?
输入
一行,只有一个正整数n。
数据范围
对于30%的数据,n不超过2147483647;
对于100%的数据,n的位数不超过18。
输出
一行,一个整数,表示金币达到n枚所需的最少天数。
想法
数据量在1e19, 所以枚举1-1e19周?
我们发现, 利用等差数列求和估算一下, 最多为第1e10周
所以枚举 1-1e10周
暴力枚举是不行了, 所以采用二分答案的方式
先利用二分求出第m周, 又因为第m周每天增加m个金币
故可以利用这一特性, 枚举出哪一天
另要注意,数据量1e10, 开个(unsigned) long long, 仍要防止相乘溢出的情况
参考
二分查找模板参考Y总
关于由数据量估计算法复杂度和内容参考Y总
实现
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
typedef unsigned long long ull; // 18位的数据量
ull n, day, week;
bool check(ull week) // 形参一开始写成了int, WA了好久, 长记性了
{// 等差数列求和公式化简后ull temp = 7*week*(week+1);if(temp >= n*2) return true;return false;
}
int binarySearch()
{ull left = 1, right = 1e10 + 9; // 不要傻乎乎的枚举1e19// .......voooooo(.代表不满足, o代表满足, 我们要的目标就是v 代表week)while(left < right) // 二分模板参考 Y总帖子: https://www.acwing.com/blog/content/31/{ull mid = (left + right) >> 1; // if(check(mid)) right = mid; // mid是满足情况的(不能丢掉!!!), 所以按[left, mid][mid+1,right]划分, 答案在[left,mid]中else left = mid + 1; // mid不满足情况, 答案在[mid+1,right]中}return left;
}
ull solve()
{ull day = week*7;ull sum = 0;// 求一下week对应的day, 这里分情况, 主要是怕/2时,丢失精度if(week%2 == 0) sum = week*7 + week/2*(week-1)*7;else sum = week*7 + (week-1)/2*week*7;// 枚举出满足情况的最小天数while(sum >= n){day--;sum -= week;}return day+1;
}
int main()
{cin >> n;week = binarySearch(); // 二分确定在哪一周day = solve(); // 枚举出哪一天, 最多枚举7次cout << day << endl; system("pause");return 0;
}
石油大 金币 二分答案相关推荐
- 计蒜客-联想专卖店大促销 (二分答案)
题目 https://nanti.jisuanke.com/t/11214 题目描述 联想专卖店准备进行大促销,每位进店购买电脑的顾客都能获得奖品大礼包.一共有三种备选奖品:U盘.鼠标和机械键盘.一共 ...
- 石油大c语言答案,中国石油大学C语言答案
int main() { char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; fun(w,a); ...
- 石油大c语言答案,中国石油大学C语言上机题答案(2013版)答案 最全最详细
由2012级学霸学长期末复习整理,包含所有2012级c语言上机题题目级及答案.比网上的2012版更新!!! 中国石油大学c语言上机题答案大全(2013版) 最全最详细 1.1 Hello world. ...
- 第十九章:二分查找和二分答案
二分查找 二分的思想在程序设计中有着广泛的应用,例如,排序算法中的快速排序.归并排序,数据结构中的二叉树.堆.线段树等.二分是一种常用且高效的算法,它的基本用途是在单调序列中进行查找和判定操作. 二分 ...
- 51Nod 1105 第K大的数 二分答案
很典型的二分答案的题目 码着 #include<iostream> #include<algorithm> #include<string> #include< ...
- UVA1396 Most Distant Point from the Sea(AM - ICPC - Tokyo - 2007)(计算几何,半平面交 + 二分答案)
整理的算法模板合集: ACM模板 题目传送门 见<训练指南>P279 很明显就是一个二分答案,它问的是最远的点,直接枚举因为这里都是double类型的数所以有无限个点,我们可以直接二分. ...
- 解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案)
根据题意,我们要环上各点权值之和除以各边权值之和最大. 求最大答案,很明显可以使用二分答案.那么我们假设当前答案为 x,如果有更大的答案,那么方程就可以按下图转换: 也就是说如果有更大的答案,则有一个 ...
- 【基础算法】二分法(二分答案,二分查找),三分法,Dinkelbach算法,算法详解+例题剖析
目录 一 . 二分法 二分搜索得要求: 二分查找步骤: 二分答案: 玄学的二分(二分答案) 二 . 三分法 例题 三.01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) 一 . 二 ...
- hihoCoder 第136周 优化延迟(二分答案+手写堆)
题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...
最新文章
- cocos2d-x 弹出对话框
- PIC在线升级源码分析
- 【测绘程序设计】视距测量神器V1.0(附源程序)
- Jmeter----5.1 设置中文
- OpenCV_ cv2.imshow()
- 设计轻松应用素材 | 免抠png和图标上哪找
- [转]一个计算机专业学生几年的编程经验汇总
- Mac是否需要始终打开Time Machine驱动器?
- 点云边界提取方法总结
- 起底 Telegram 的发家史:Pavel Durov 的游戏才刚刚开始
- 主板4线风扇原理分析
- java实现图片文件上传下载_java实现文件的上传和下载
- 图书管理系统 (大一小白级别)
- 网易邮箱阻止一次非法访问解除方法
- linux dev queue xmit,dev_queue_xmi函数详解
- Docker image 是啥?
- 微信小程序实战教程1503---生成二维码
- 电脑为什么刚开机时网速挺快,可过一段时间后就很慢了?重启电脑就解决了问题。
- java从入门到精通API02
- JSP Taglib指令具有什么功能呢?
热门文章
- 【无题】小昭 の 念叨
- 中石油远程教育计算机作业第三次,中国石油大学计算机网络原理-第三次在线作业.docx...
- Windows下好用的轻量小程序(不定期更新)-20190521更新
- 破解WIFI密码,增强网络信号,带你畅玩网络世界
- 双系统启动菜单修复工具(NTBootAutofix)v2.5.7 绿色版
- Linux属于软件还是硬件,Linux系统教程_Linux系统软件处理和硬件处理的区别有什么不一样?...
- python中info的用法_使用Python中的data.info()显示所有信息
- MacBook Air 2013年中10.9版本升级到macOS Sierra
- 如何上传文件到IPFS
- 暗组工具箱 荐!!!