【深夜题解】

题目链接:https://arc091.contest.atcoder.jp/tasks/arc091_b

题目大意:给出两个正整数N、K,找出所有的不大于N的正整数对(a,b)使b%a>=K,求数对总数。

解题思路:

解这道题的历程很纠结……倒不是题目问题而是心理问题,值得反思,应该克服浮躁畏难情绪。

回归题目,首先对于b%a>=K,我们可以想到a>K这一必须条件,当a==K+1时,b==d*a+K;当a==K+2时,b==d*a+K+1或d*a+K。

d可以从0开始取值,只要满足b不大于N即可,那么其实每个d的最大值都十分好求,d==(N-K-x)/a;(a>x+K>=K)

但是如果枚举每个x和a的话时间复杂度是N^2,,会T。于是我们根据此题的特殊条件,寻求只枚举a的解法。

对于每一个a,b%a的值都有(a-k)种可能,如果每种可能的d都一样,那我们就可以省略枚举d了。

那么每种可能的d到底一不一样呢?答案是否定的。

但是,我们可以发现对于确定的a,每种可能的d最多只会相差1。

我们来仔细分析d的组成:

(N-K-x)/a==(N/a*a+N%a-K-x)/a==N/a+(N%a-K-x)/a。

对于每个x,最终种数是d+1(从0开始取值),所以ans+=N/a+(N%a+a-K-x)/a;

而K+x是小于a的,所以后边那一团恒正,且小于2*a,只需要判断是否大于a(商为1还是0)就行了。

那么商为1的到底有多少个?N%a+a-K-x>=a=====N%a-K-x>=0=====N%a-K>=x。我们可以o(1)求出能提供格外贡献的x有多少个了,答案就是N%a-K+1(x也从0开始取)。

所以对于一个a,它提供的贡献是(N/a)*(a-k)+max(0,N%a-K+1)。

另外此题还有一个trick,要求a,b是正整数,当k==0的时候,b==0在本算法中也是合理解,必须排除,所以特判一下(ans-N)。

下面放1msAC代码:

#include<stdio.h>

int _max(int a,int b){return a>b?a:b;}

int main(){

    long long ans=;
int n,k,i,a;
scanf("%d%d",&n,&k);
for(i=k+;i<=n;i++){
ans+=(long long)(n/i)*(i-k);
ans+=(long long)_max(,n%i-k+);
}
if(k==)ans-=(long long)n;
printf("%lld",ans);
return ;
}

【数学】At Coder 091 D题的更多相关文章

  1. 2018年数学建模国赛B题 智能RGV的动态调度策略

    第一种情况大致思路: 每秒判断各个CNC的状态,若工作完成或者是出于空闲状态下则向RGV发出一个请求.同时,RGV每秒判断自己的状态(上下料.移动.闲置.清洗等),如果是处于闲置状态,则启用调度算法, ...

  2. 2017 年“认证杯”数学中国数学建模网络挑战赛 C题思路讲解

    之前有小伙伴私信我叫我说说这次比赛C题的思路,怎么写的,我就写篇博客说说吧,仅供参考! 针对C题,该题目比较综合,是一个成熟的数模赛题,与国赛的相似性较高.一般而言,第一问难度较低,题目要求进行数据挖 ...

  3. 【BZOJ4173】数学 欧拉函数神题

    [BZOJ4173]数学 Description Input 输入文件的第一行输入两个正整数 . Output 如题 Sample Input 5 6 Sample Output 240 HINT N ...

  4. 集训第六周 数学概念与方法 J题 数论,质因数分解

    Description Tomorrow is contest day, Are you all ready? We have been training for 45 days, and all g ...

  5. Codeforces Beta Round #2B(dp+数学)

    贡献了一列WA.. 数学很神奇啊 这个题的关键是怎么才能算尾0的个数 只能相乘 可以想一下所有一位数相乘 除0之外,只有2和5相乘才能得到0 当然那些本身带0的多位数 里面肯定含有多少尾0 就含有多少 ...

  6. 【最短路】【数学】CSU 1806 Toll (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1806 题目大意: N个点M条有向边,给一个时间T(2≤n≤10,1≤m≤n(n-1), ...

  7. 【数学】CSU 1810 Reverse (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1810 题目大意: 一个长度为N的十进制数,R(i,j)表示将第i位到第j位翻转过来后的 ...

  8. 【BZOJ2134】单位错选(数学期望,动态规划)

    [BZOJ2134]单位错选(数学期望,动态规划) 题面 BZOJ 题解 单独考虑相邻的两道题目的概率就好了 没了呀.. #include<iostream> #include<cs ...

  9. 复旦高等代数 I(17级)每周一题

    本学期将继续进行高等代数每周一题的活动.计划从第二教学周开始,到第十六教学周为止(根据法定节假日安排,中间个别周会适当地停止),每周的周末将公布1-2道思考题,供大家思考和解答.每周一题通过“谢启鸿高 ...

随机推荐

  1. Java线上应用故障排查之一:高CPU占用【转】

    近期java应用,CPU使用率一直很高,经常达到100%,通过以下步骤完美解决,分享一下. 方法一: 转载:http://www.linuxhot.com/java-cpu-used-high.htm ...

  2. [How to] MapReduce on HBase ----- 简单二级索引的实现

    1.简介 MapReduce计算框架是二代hadoop的YARN一部分,能够提供大数据量的平行批处理.MR只提供了基本的计算方法,之所以能够使用在不用的数据格式上包括HBase表上是因为特定格式上的数 ...

  3. PHP发送邮件:如何自定义reply-to头部以及附件

    虽然有现成的类库(如PEAR)可以很方便地实现附件添加和发送,但是对于一些小站点(服务器硬件.网站规模都不理想),安装PEAR可能会带来不必要的负担,降低WEB程序运行效率. 通过对邮件格式的认识,我 ...

  4. [ python ] 练习作业 - 1

    1,写代码,有如下列表,按照要求实现每一个功能 li = ["alex","wusir","eric","rain",& ...

  5. JSP、EL表达式、JSTL

    JSP 1.什么是jsp? Java Server Pages: java服务器端页面.可以理解为一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码.其本质就是一个Servlet. ...

  6. UVA 11624 Fire!(两次BFS+记录最小着火时间)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  7. 基于AQS实现的Java并发工具类

    本文主要介绍一下基于AQS实现的Java并发工具类的作用,然后简单谈一下该工具类的实现原理.其实都是AQS的相关知识,只不过在AQS上包装了一下而已.本文也是基于您在有AQS的相关知识基础上,进行讲解 ...

  8. C语言 五子棋2

    #include<windows.h> #include<stdlib.h> #include<stdio.h> #include<conio.h> # ...

  9. 深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 最近接下来几篇博文会回到神经网络结构 ...

  10. linux中使用vim编译C++程序

    Vi三种模式详解 命令行模式 (command mode/一般模式) 任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式:我们在shell环境(提示符为$)下输入启动Vi ...