codechef T3 计算器

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 单位的能量。大厨可以 按照下面的方案操作:

操作 屏幕一数字 屏幕二数字 剩余能量

按钮一 1 0 9

按钮一 2 0 8

按钮一 3 0 7

按钮一 4 0 6

按钮二 4 4 4

按钮二 4 8 2

按钮二 4 12 0

这就是道数学题 我们设操作二次数为x 那么结果就是x*(n-k*x)  x取值范围是x<n/k 定点是n/2k 所以顶点也就是最大值一定能取到 当然因为x一定是整数所以还得找一波左右比较一下就好啦233

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
int read(){
    int ans=0,f=1,c=getchar();
    while(c<‘0‘||c>‘9‘){if(c==‘-‘) f=-1; c=getchar();}
    while(c>=‘0‘&&c<=‘9‘){ans=ans*10+(c-‘0‘); c=getchar();}
    return ans*f;
}
int T,n,k;
LL ans;
LL get_max(LL x){return x*(n-k*x);}
int main()
{
    T=read();
    while(T--){
        n=read(); k=read();
        int v1=n/(2*k),v2=v1+1;
        ans=max(get_max(v1),get_max(v2));
        printf("%lld\n",ans);
    }
    return 0;
}

时间: 2024-07-30 06:36:46

codechef T3 计算器的相关文章

codechef AUG17 T3 Greedy Candidates

Greedy Candidates Problem Code: GCAC The placements/recruitment season is going on in various colleges. The interviews are over, and each company has selected some students. But since each student can end up finally in at most one company, a student

复利计算器3.01

1 此版本的复利计算器对输入的数据进行了限制,只能输入数字字符,并对输入的数据进行判断是否完整 2 package JSQ; 3 4 import java.awt.EventQueue; 5 6 import javax.swing.JFrame; 7 import javax.swing.JPanel; 8 import javax.swing.border.EmptyBorder; 9 import javax.swing.ButtonGroup; 10 import javax.swin

pyqt练习x5.0计算器

from __future__ import division # -*- coding: utf-8 -*- import sys,os,decimal,tempfile,math,time from PyQt4 import QtGui,QtCore,Qt class Jsj(QtGui.QWidget): #print'正在加入命令中' def __init__(self,parent=None): QtGui.QWidget.__init__(self) #创建窗口界面 self.wid

codechef MAY18 div2 部分题解

T1 https://www.codechef.com/MAY18B/problems/RD19 刚开始zz了,其实很简单. 删除一个数不会使gcd变小,于是就只有0/1两种情况 T2 https://www.codechef.com/MAY18B/problems/XORAGN 我们可以把B序列看做一个矩阵 那么$A(i,j)$和$A(j,i)$会抵消掉 因此答案就是$\sum_1^n A(i,i) + A(i,i)$ T3 https://www.codechef.com/MAY18B/pr

MIPS汇编程序设计——四则运算计算器

实验目的 运用简单的MIPS实现一个能够整数加减乘除的计算器,同时使自己更加熟悉这些指令吧 MIPS代码 #https://blog.csdn.net/oncoding/article/details/4346531 #sample example 'a small calculater' # data section .data value: .word 0, 0, 0 ,0 ,0 # 0: first num ,4 : second num , 8 : operation , 12:resu

[Codechef - ADITREE] Adi and the Tree - 树链剖分,线段树

[Codechef - ADITREE] Adi and the Tree Description 树上每个节点有一个灯泡,开始所有灯泡都是熄灭的.每次操作给定两个数 \(a,b\) ,将 \(a,b\) 这两个节点的灯的状态改变.定义某个状态的权值为,将树上所有亮点两两配对,每个对的权值的总和最小值.其中一个配对的权值定义为这两个点之间的距离.求出每次操作后的权值. Solution 很容易发现如果我们将每个亮点到树根的路径染色,那么染色次数为奇数的路径就会被统计入答案. 所以只需要维护布尔值

【Codechef】A Triangle and Two Squares-Problem Code: SQRTRI

题意: 给出一个边长为a的正方形,其左下角坐标为(0,0),右上角坐标为(a,a). 此外,再给出一个边长为b的小正方形,以及它的左下角坐标(x,y),其右上角. 坐标为(x+b,y+b),并且保证小正方形一定在大正方形内(有可能会与大正方形的边重合,但不会超出大正方形). 问是否存在一个在顶点都在大正方形边上的三角形,满足三角形一条边在包含小正方形的一条边(小正方形的一条边在三角形的一条边上),并且三角形包含小正方形(小正方形在三角形内部,正方形的顶点或者边可以与三角形边重合). 若存在,输出

【自动化__GUI自动化】__java__Windows应用程序识别__计算器

一.代码如下 package www.woniu.gui.one; import java.awt.AWTException; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.aw

bzoj2242: [SDOI2011]计算器.

2242: [SDOI2011]计算器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 4353  Solved: 1679[Submit][Status][Discuss] Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数. In