时间限制: 1 s   空间限制: 32000 KB    题目等级 : 钻石 Diamond
题目描述 Description

某陈痴迷于pku的ACM题库,常常彻夜奋斗刷题.他最近的目标是在NOIP08到来之前刷进RANK[排名]200.

//----------^_^ encourage...-----------

pku对用户RANK的排列基于2个参数.Solved[通过的题数]和Submissions[提交次数].而二者之比就是AC Ratio[通过率].它反映一个用户的代码质量.话说某陈的AC Ratio就快降到60%了..郁闷ing.

最近某陈看到pku上有一串非常搞笑的用户,他们Solved的数量相同,而Submissions是从a到b的连续整数.某陈想要知道他们的AC Ratio之和.

当然,某陈要求的AC Ratio并不是完全如上所述[某陈:切..要是那样我自己就会写].他讨厌误差,于是他把Solved的数量用某种诡异的算法扩大了许多许多,变成一个整数n[数据保证0<n,但并不保证n<=b],他要求的AC Ratio,是n除以Submissions的商向上取整.

请帮某陈以他的方式计算那一串用户的AC Ratio之和.

输入描述 Input Description

输入文件包含3个整数,依次为题目描述中的n,a,b.数据保证0<a<=b<2^31,0<n<2^31.

输出描述 Output Description

输出文件应包含一个整数,是题目所要求的AC Ratio之和.

样例输入 Sample Input

18  8 10

样例输出 Sample Output

7

数据范围及提示 Data Size & Hint

[18/8]+[18/9]+[18/10]=3+2+2=7

[x]为实数x向上取整的值,例如 [5]=[4.03]=[4.92]=5

 #include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
long long a,b,ans;
double c;
long long f(double n,long long a,long long b )
{
if(ceil(n/a)==ceil(n/b)) return (b-a+)*(ceil(n/a));
long long mid=(a+b)/;
return f(n,a,mid)+f(n,mid+,b);
// return ans;
}
int main()
{
scanf("%lf%lld%lld",&c,&a,&b);
printf("%lld",f(c,a,b));
return ;
}

思路:分治的思想,如果 f(n, a, b) 表示该题的解,那么一定有 f(n, a, b) = f(n, a, (a + b) / 2) + f(n, (a + b) / 2 + 1, b);容易知道:当 [n / a] = [n / b] 时,f(n, a, b) = (b - a + 1) * [n / a],这比求和快一点。可知在b远大于n时,许多加数都为1。如 n = 5, b = 16, a = 4 时,可以用式 (2 + 1 * 6) + (1 * 6) 得解。但在n大于b时,对于任意 i 属于 [a, b],[n / i] > 1。因此,最差情况时,该算法时间复杂度不如朴素算法。如果一次除法并且向上取整的时间复杂度为O(1),那么该算法的时间复杂度为O(b-a)。暴力啥的那都弱爆了

反思:二分并不一定要分到1

Codevs 2666 2666 Accept Ratio的更多相关文章

  1. 2666 Accept Ratio(打表AC)

    2666 Accept Ratio  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 某陈痴迷 ...

  2. Benchmark of Large-scale Unconstrained Face Recognition-blufr 算法的理解

    Many efforts have been made in recent years to tackle the unconstrained face recognition challenge. ...

  3. BZOJ 2666: [cqoi2012]组装

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2666 题意:n种零件,m个位置,每个位置有一种零件.求一个位置x,使得cost(1 ...

  4. How to accept Track changes in Microsoft Word 2010?

    "Track changes" is wonderful and remarkable tool of Microsoft Word 2010. The feature allow ...

  5. codevs 3289 花匠

    题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...

  6. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  7. codevs 1285 二叉查找树STL基本用法

    C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...

  8. codevs 1576 最长上升子序列的线段树优化

    题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...

  9. codevs 1080 线段树点修改

    先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...

随机推荐

  1. js dom node.children与node.childNodes区别

    不同点:node.children不会取到节点下面的TextNode但是node.childNodes会取到 共同点:两者都是集合类数组,可以通过索引的方式取到值也可以用for循环遍历

  2. php 生成饼状图,折线图,条形图 通用类 2

    生成饼状图,折线图,条形图通用的php类,这里使用的是国外的 HighCharts,前台页面别忘了调用HighCahrt  js HighCharts中文网站  http://www.hcharts. ...

  3. 毕业设计:HomeFragment(一)

    一.主要思路 主要是通过ListView实现. 考虑到以后会添加长按修改功能,所以好几个地方都是用的FramLayout,而且CheckBox初始状态是被隐藏的.给ListView添加OnItemCl ...

  4. 测试当前C环境的栈帧增长方向以及传递参数时的压栈顺序

    前文链接:上次由于一个很常见的printf-bug(下文有提及)引发了我对栈的思考,并写下了一点总结.这次就尝试对不同的C环境进行实践,检测其传递参数的一些性质. 这是今天写的检查C环境的一段程序.能 ...

  5. (转)Spring如何装配各种集合类型的属性

    http://blog.csdn.net/yerenyuan_pku/article/details/52858499 在前面我们已经会注入基本类型对象和其他bean,现在我们就来学习如何注入各种集合 ...

  6. leetcode_41. First Missing Positive_cyclic swapping

    https://leetcode.com/problems/first-missing-positive/ 给定一个长度为len的无序数组nums,找到其第一个丢失的正整数. 解法: 使用cyclic ...

  7. Mysql is not allowed to connect mysql server

    1.     mysql -u root -p 2.    select host from user where user='root';      //可以看到当前主机配置信息为localhost ...

  8. execve - 执行程序

    总览 (SYNOPSIS) #include <unistd.h> int execve (const char *filename, char *const argv [], char ...

  9. project .mpp 查看当天工作任务 1.选择自己 2.选择起始和终止时间 就显示当天的任务了

    project .mpp 查看当天工作任务 1.选择自己 2.选择起始和终止时间 就显示当天的任务了

  10. JavaEE-01 JSP动态网页基础

    学习要点 B/S架构的基本概念 Web项目的创建和运行 JSP页面元素 MyEclipse创建和运行Web项目 Web程序调试 Web简史 web前端技术演进三阶段 WEB 1.0:信息广播. WEB ...