Codevs 2666 2666 Accept Ratio

时间限制: 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

 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstdio>
 4 using namespace std;
 5 long long a,b,ans;
 6 double c;
 7 long long f(double n,long long a,long long b )
 8 {
 9     if(ceil(n/a)==ceil(n/b)) return (b-a+1)*(ceil(n/a));
10     long long mid=(a+b)/2;
11     return f(n,a,mid)+f(n,mid+1,b);
12 //    return ans;
13 }
14 int main()
15 {
16     scanf("%lf%lld%lld",&c,&a,&b);
17     printf("%lld",f(c,a,b));
18     return 0;
19 }

思路:分治的思想,如果 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)。暴力啥的那都弱爆了

时间: 2024-08-01 06:55:35

Codevs 2666 2666 Accept Ratio的相关文章

BZOJ 2666: [cqoi2012]组装

题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2666 题意:n种零件,m个位置,每个位置有一个零件.求一个位置x,使得cost(1)+cost(2)+…+cost(n)最小.cost(i)表示 x到最近的i类型零件的距离的平方. 思路:我们最后的最优答案一定从所有m个位置中选出了n个使得每种零件恰有一个.设第i种零件的所有位置集合是Si,Si的大小是Ci 我们可以直接枚举最后选出的第i种零件是哪一个,一旦确定了这n个零件.那么

Android java.lang.StackOverflowError at android.view.ViewGroup.drawChild(ViewGroup.java:2666)

做这样一个页面,下面有五个页签,滑动,有数据显示listview,无数据显示动画,开始我看到他们好多东西是相同的,就提取出来,用include包含布局文件: 结果报一下错误: 01-28 11:27:36.593: E/AndroidRuntime(16182): FATAL EXCEPTION: main 01-28 11:27:36.593: E/AndroidRuntime(16182): java.lang.StackOverflowError 01-28 11:27:36.593: E

hdu 2666 Matrix

Matrix Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1332    Accepted Submission(s): 740 Problem Description Yifenfei very like play a number game in the n*n Matrix. A positive integer number

BZOJ 2666 cqoi2012 组装 贪心

题目大意:给定数轴上的m个点,共有n种颜色,要求在数轴上选定一个点,使这个点到每种颜色最近的点的平方和最小 初始将所有颜色最左侧的点作为最近点,然后不断选择[当前点与同种颜色下一个点的中点最靠左的点]进行替换,并更新ans 理性证明见http://www.cnblogs.com/jianglangcaijin/p/4204478.html 下面来个感性证明: 这不是显然么- - 考虑将组装车间从-∞移动到+∞ 初始选择最左侧的点作为最近点 那么移动的过程中一旦车间离同种颜色的下一个点更近 那么当

[ CodeVS冲杯之路 ] P2492

不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直接树状数组(以下简称BIT)维护,修改操作就一个个暴力开方搞,再用差值单点更新BIT 不过这样会TLE,要加一点优化对不对,正如开头所说的路径压缩链表 路径压缩链表其实就是个并查集,在普通的链表里,删去两个连续的节点后会是下面这种情况,如删去2,3 当访问 2 的时候,会跳到3,但 3 已经删除了,

QT的父子Widget之间消息的传递(如果子类没有accept或ignore该事件,则该事件会被传递给其父亲)

以前我一直以为:在父widget上摆一个子widget后,当click子widget时:只会进入到子widget的相关事件处理函数中,比如进入到mousePressEvent()中, 而不会进入到父widget的对应事件处理函数中.毕竟:click的是子widget,其遮挡住了父widget,从而父widget接收不到这个事件.然而事实真的是这个样子吗? 我做了一个测试: 在一个QWidget上建了一个QLabel.而后实现父QWidget的mousePressEvent(), 然后跟一下发现:

[CODEVS 1281] Xn数列

描述 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn http://codevs.cn/problem/1281/ 分析 比较裸的矩阵乘法题, 好久没做了, 写写思路 假设矩阵 A = { {a1, a2}, {a3, a4} }, B = { {b1, b2}, {b3, b4} }. 根据矩阵乘法的计算方法, 有 : A×B = { {a1b1+a2b2, a1b2+a2b4}, {a3b1+a4b3, a3b2+a4b4} }. 那

Codevs 1257 打砖块

1257 打砖块 http://codevs.cn/problem/1257/ 题目描述 Description 在一个凹槽中放置了n层砖块,最上面的一层有n块砖,第二层有n-1块,……最下面一层仅有一块砖.第i层的砖块从左至右编号为1,2,……i,第i层的第j块砖有一个价值a[i,j](a[i,j]<=50).下面是一个有5层砖块的例子.如果你要敲掉第i层的第j块砖的话,若i=1,你可以直接敲掉它,若i>1,则你必须先敲掉第i-1层的第j和第j+1块砖. 你的任务是从一个有n(n<=5

codevs——T1219 骑士游历

 http://codevs.cn/problem/1219/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 设有一个n*m的棋盘(2≤n≤50,2≤m≤50),如下图,在棋盘上有一个中国象棋马. 规定: 1)马只能走日字 2)马只能向右跳 问给定起点x1,y1和终点x2,y2,求出马从x1,y1出发到x2,y2的合法路径条数. 输入描述 Input Description 第一行2个整数n和m 第二行4个