【数学】At Coder 091 D题
【深夜题解】

题目链接: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题的更多相关文章
- 2018年数学建模国赛B题 智能RGV的动态调度策略
第一种情况大致思路: 每秒判断各个CNC的状态,若工作完成或者是出于空闲状态下则向RGV发出一个请求.同时,RGV每秒判断自己的状态(上下料.移动.闲置.清洗等),如果是处于闲置状态,则启用调度算法, ...
- 2017 年“认证杯”数学中国数学建模网络挑战赛 C题思路讲解
之前有小伙伴私信我叫我说说这次比赛C题的思路,怎么写的,我就写篇博客说说吧,仅供参考! 针对C题,该题目比较综合,是一个成熟的数模赛题,与国赛的相似性较高.一般而言,第一问难度较低,题目要求进行数据挖 ...
- 【BZOJ4173】数学 欧拉函数神题
[BZOJ4173]数学 Description Input 输入文件的第一行输入两个正整数 . Output 如题 Sample Input 5 6 Sample Output 240 HINT N ...
- 集训第六周 数学概念与方法 J题 数论,质因数分解
Description Tomorrow is contest day, Are you all ready? We have been training for 45 days, and all g ...
- Codeforces Beta Round #2B(dp+数学)
贡献了一列WA.. 数学很神奇啊 这个题的关键是怎么才能算尾0的个数 只能相乘 可以想一下所有一位数相乘 除0之外,只有2和5相乘才能得到0 当然那些本身带0的多位数 里面肯定含有多少尾0 就含有多少 ...
- 【最短路】【数学】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), ...
- 【数学】CSU 1810 Reverse (2016湖南省第十二届大学生计算机程序设计竞赛)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1810 题目大意: 一个长度为N的十进制数,R(i,j)表示将第i位到第j位翻转过来后的 ...
- 【BZOJ2134】单位错选(数学期望,动态规划)
[BZOJ2134]单位错选(数学期望,动态规划) 题面 BZOJ 题解 单独考虑相邻的两道题目的概率就好了 没了呀.. #include<iostream> #include<cs ...
- 复旦高等代数 I(17级)每周一题
本学期将继续进行高等代数每周一题的活动.计划从第二教学周开始,到第十六教学周为止(根据法定节假日安排,中间个别周会适当地停止),每周的周末将公布1-2道思考题,供大家思考和解答.每周一题通过“谢启鸿高 ...
随机推荐
- Code::Blocks之自动打开上次未关闭工作空间
问题:如何设置Code::Blocks,使每次打开软件时,自动打开上次未关闭的工作空间? 设置(S) -> 环境设置...(E) -> 常规设置: 勾选"在程序启动时" ...
- JavaScrip入门笔记(二)
使用JS完成表格的隔行换色 新标签的学习 <thead> <tr> <th></th> </tr> </thead> <t ...
- 【BZOJ】4032: [HEOI2015]最短不公共子串(LibreOJ #2123)
[题意]给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短 ...
- C语言二分查找
#include <stdio.h> /* 二分查找条件: 1.有序序列 2.数据在数组中 */ int baseBinarySearch(int a[],int h,int k) { ; ...
- 【leetcode 简单】第四题 罗马数字转整数
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列 ...
- Redis数据类型之列表(list)
1. 什么是列表 redis的列表使用双向链表实现,往列表中放元素的时候复杂度是O(1),但是随机访问的时候速度就不行了,因为需要先遍历到指定的位置才可以取到元素. 既然列表是使用链表实现的,那么就说 ...
- python3爬虫.2.伪装浏览器
有的网页在爬取时候会报错返回 urllib.error.HTTPError: HTTP Error 403: Forbidden 这是网址在检测连接对象,所以需要伪装浏览器,设置User Agent ...
- PHP开发-最简单的数据库操作,使用ezSQL
PHP数据库操作使用ezSQL来实现,简单好用. 如果用的是mysql数据库,将下载的ezSQL文件中的mysql和shared连个文件夹拷贝到PHP工程目录中引用即可. 在PHP文件中 // Inc ...
- VideoJS 与 Framework7 中 fastclick 冲突问题
Framework7 由于自动启用 fastclick,会导致在 移动端下使用 video.js,控制条上的 播放和音量按钮 点击的时候会触发两次. 解决办法: 1. 全局禁用 fastclick, ...
- NoSQL-来自维基百科
NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称. 两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言.其数据存储可以不需 ...