CALC: 计算器
题目描述
大厨有一个计算器,计算器上有两个屏幕和两个按钮。初始时每个屏幕上显示的都是 0。每按
一次第一个按钮,就会让第一个屏幕上显示的数字加 1,同时消耗 1 单位的能量。
每按一次第二个按钮,会让第二个屏幕上显示的数字加上第一个屏幕上显示的数字,同时消
耗 B 单位的能量。
初始时,计算器有 N 单位的能量。大厨想知道在能量限制下,第二个屏幕上最大可以出现的
数字是多少?
输入格式
输入的第一行包含一个整数 T,代表测试数据的组数。接下来是 T 组数据。
每组数据仅有一行,包含两个整数 N 和 B。
输出格式
对于每组数据,输出一行,包含一个整数,代表所求的答案。
数据范围和子任务
• 1 ≤ T ≤ 10, 000
• 1 ≤ N, B ≤ 1, 000, 000, 000
子任务 1(20 分):
• 1 ≤ N, B ≤ 1, 000
子任务 2(80 分):
• 无附加限制
样例数据
输入
3
10 2
8 5
6 1
输出
12
3
9
样例解释
对于第一组数据,可以使用 10 单位的能量,按一次第二个按钮耗费 2 单位的能量。大厨可以
按照下面的方案操作:

我们假设按了x次一号按钮,y次二号按钮,则由贪心的想法(即现一次性按完按钮1,再按完按钮2)得知x,y满足:

x+By=N,求x*y的最大值。

则x=N-By,折ans=x*y,则ans= -By^2+Ny

这是一个二次函数,顶点在-b/2a,也就是 N/2B。由于x,y是整数,所以除了取x=N/2B,还要取x=N/2B-1,x=N/2B+1等算一下(因为顶点不一定就是整点)。

 #include<cstdio>
 #include<cstring>
 #include<algorithm>
 #include<iostream>
 #include<string>
 using namespace std;
 int main(){
     int T; scanf("%d",&T);
     for (; T; T--){
         long long N,B; scanf("%lld%lld",&N,&B);
         *B),x;
         long long ans=(-B*y+N)*y;
         x=y-,ans=max(ans,(-B*x+N)*x);
         x=y,ans=max(ans,(-B*x+N)*x);
         x=y+,ans=max(ans,(-B*x+N)*x);
         printf("%lld\n",ans);
     }
     ;
 } 

最新文章

  1. 使用jQuery封装实用函数
  2. 安装UnityVS 2012步骤
  3. JavaScript权威指南(第六版)--JavaScript概述 DEMO
  4. ASP.NET的学习之asp.net整体运行机制
  5. 关于Talend的Patch分支对应Eclipse开发环境的配置总结.
  6. 微信跳一跳的mini辅助设计
  7. Python面向对象篇(3)-封装、多态、反射及描述符
  8. vue实现懒加载的几种方法
  9. [bzoj省选十连测推广赛2]T2七彩树
  10. python全栈开发 * css 选择器 浮动 * 180808
  11. c语言宏开关 使用
  12. PPT制作
  13. springboot2.X访问静态文件配置
  14. CCPC-Wannafly Winter Camp Day8 (Div2, onsite)
  15. Python实例---模拟微信网页登录(day5)
  16. BootStrap行内编辑
  17. ASP.NET重写Render 加载CSS样式文件和JS文件(切换CSS换皮肤)
  18. 在Eclipse中Attach Source
  19. Mybatis实现原理探究-实现部分Mybatis功能(上)
  20. new FileInputStream(file)中file不能为文件夹

热门文章

  1. BZOJ 1055: [HAOI2008]玩具取名(记忆化搜索)
  2. C++通过jsoncpp类库读写JSON文件-json用法详解
  3. Java LocalDateTime,DateTimeFomatter----JDK8新时间类的简单使用
  4. android studio 的基本使用和建立一个小项目
  5. python中while循环运算符及格式化输出
  6. MySql登陆密码忘记了怎么办?MySQL重置root密码方法
  7. VC.【转】采用_beginthread/_beginthreadex函数创建多线程
  8. linux 打开一个文件现swap文件
  9. vue中的slot插槽
  10. python Django 创建应用