博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2831(小强的金字塔系列问题--区域整点数求法)
阅读量:6404 次
发布时间:2019-06-23

本文共 1655 字,大约阅读时间需要 5 分钟。

题意就是给出A,B,C,R,L,然后求

这里其实用到扩展欧几里德。(基本上参照clj的解题报告才理解的)

分析:我们先来分析一般情况:

这里我们假设A<C和B<C,否则我们可以把它化成A<C,B<C的情况

我们令:,所以上式就等价于:

,如果,那么的值是1,否则为0

然后我们交换顺序:,由于,所以

推导过程:因为,所以,那么,进一步有:

,所以

令:

那么式子就转化为:

这样一看我们就交换了A,C了,也就是扩展欧几里德算法,详见金斌2009论文。

我们继续化简,发现又把问题转化成求: 和 

这样的话与上面同样的思路继续化简:对于比较简单,就不写过程了。

下面来说说的化简过程:

然后分析就完毕!

由于本题的数很大,要用高精度,用Python最好,因为一是Python高精度可以直接算,二是Python直接返回元组方便。

 

sum = lambda n : n*(n+1)/2sqrtsum = lambda n : n*(n+1)*(2*n+1)/6def f(a,b,c,r):     if r<0:         return [0]*3     if a>=c:         t=f(a%c,b,c,r)         a/=c         return [t[0]+a*sqrtsum(r),t[1]+a*sum(r),t[2]+a*a*sqrtsum(r)+2*a*t[0]]     elif b>=c:          t=f(a,b%c,c,r)          b/=c          return [t[0]+b*sum(r),t[1]+b*(r+1),t[2]+b*b*(r+1)+2*b*t[1]]     else:          if a==0:              return [0]*3          y=(a*r+b)/c          t=f(c,c-b-1,a,y-1)          ans=[y*sum(r)-(t[1]+t[2])/2,y*r-t[1],y*y*r-2*t[0]-t[1]]          return ansa,c,b,l,r=map(int,raw_input().split())print f(a,b,c,r)[0]-f(a,b,c,l-1)[0]

 

典型题目一:

题意:求满足 y <= ax / b and x <= n的整点个数x,y,a,b,n都是非负的整数。

分析:实际上就是求:,就是上题的思路。

 

#include 
#include
#include
using namespace std;typedef long long LL;LL gcd(LL a,LL b){ return b? gcd(b,a%b):a;}LL dfs(LL n,LL a,LL b){ LL t=n*(n+1)/2*(a/b); a%=b; if(a==0) return n+1+t; LL d=a*n/b; t+=(n+1)*(d+1)+d/a+1; return t-dfs(d,b,a);}int main(){ LL t,n,a,b,p; scanf("%lld",&t); while(t--) { scanf("%lld%lld%lld",&n,&a,&b); p=gcd(a,b); printf("%lld\n",dfs(n,a/p,b/p)); } return 0;}

 

典型题目二:2013年ACM全国邀请赛南京赛区一题:http://icpc.njust.edu.cn/Local/1742

分析:本题比较难,其实方法跟上题差不多,要分析的过程更加复杂些。

 

 

 

你可能感兴趣的文章
屏蔽可忽略的js脚本错误
查看>>
散文分享
查看>>
【Vue】vue.js常用指令
查看>>
NFS学习
查看>>
MySql常用命令总结
查看>>
又一年...
查看>>
文件上传框的美化+预览+ajax
查看>>
Linux VFS
查看>>
ext不能选中复制属性_如何实现Extjs的grid单元格只让选择(即可以复制单元格内容)但是不让修改?...
查看>>
python中print的作用*8、不能+8_在 Python 3.x 中语句 print(*[1,2,3]) 不能正确执行。 (1.0分)_学小易找答案...
查看>>
python 生成html代码_使用Python Markdown 生成 html
查看>>
axure如何导出原件_Axure 教程:轻松导出图标字体所有图标
查看>>
laravel input值必须不等于0_框架不提供,动手造一个:Laravel表单验证自定义用法...
查看>>
cad填充图案乱理石_太快了吧!原来大神是这样用CAD图案填充的
查看>>
activator.createinstance 需要垃圾回收么_在垃圾回收器中有哪几种判断是否需要被回收的方法...
查看>>
rocketmq 消息指定_RocketMQ入坑系列(一)角色介绍及基本使用
查看>>
redis zset转set 反序列化失败_掌握好Redis的数据类型,面试心里有底了
查看>>
p图软件pⅰc_娱乐圈最塑料的夫妻,P图永远只P自己,太精彩了吧!
查看>>
jenkins 手动执行_Jenkins 入门
查看>>
怎么判断冠词用a还是an_葡语干货 | 葡萄牙语冠词用法整理大全
查看>>