题目:2831: 小强的金字塔


题意就是给出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)/2
sqrtsum = lambda n : n*(n+1)*(2*n+1)/6def f(a,b,c,r):if r<0:return [0]*3if a>=c:t=f(a%c,b,c,r)a/=creturn [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/=creturn [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]*3y=(a*r+b)/ct=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]


典型题目一:SPOJ4717. Grid Points in a Triangle


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


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


#include <iostream>
#include <stdio.h>
#include <string.h>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


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



BZOJ2831(小强的金字塔系列问题--区域整点数求法)相关推荐

  1. 数字基建系列(一)数分如何参与埋点工作

    数字基建系列(一)数分如何参与埋点工作 正如开篇所说,分析师应该协同产研一起进入埋点工作中.由于大部分公司的埋点系统或平台都不太一致,这里也仅以笔者的经验进行简单分享.首先,埋点的整体流程大同小异,产 ...

  2. 自定义ImageView系列 - 区域截图(下)

    功能要点: - 根据控件自身大小计算合适的透明正方形预览区: - 截取预览区图像并按照指定的尺寸缩放,生成Bitmap对象. 本文着重介绍上述第2个要点. 有关第一个要点的内容,请参阅上一篇文章:请点 ...

  3. python输出字母金字塔可以输入字母和行数的_python实现输入任意一个大写字母生成金字塔的示例...

    输入任意一个大写字母,生成金字塔图形 def GoldTa(input): L = [chr(i) for i in range(65, 91)] # 大写字母A--Z idA = 65 # 从A开始 ...

  4. leetcode系列--9.回文数

    leetcode系列–第9题.回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如,1 ...

  5. 数据仓库系列(四)数仓架构以及多维数据模型的设计

    文章目录 一.前言 二.数据仓库的定义 三.数据仓库的特点 四.数据仓库的作用 五.数据仓库的架构 六.数据仓库的要求 七 .数据仓库分层 八.数据仓库四个层次的划分 8.1 ODS层 8.2 PDW ...

  6. 数学基础系列:集合与数

    本文旨在整理一些集合论中的基础概念与定理,其中术语尽量使用中文. 1 集合论基础 首先,我们介绍Cartesian product(笛卡尔积.直积) A × B A\times B A×B,就是从 A ...

  7. C#语言实例源码系列-实现带行数和标尺的RichTextBox

    专栏分享 点击跳转=>Unity3D特效百例 点击跳转=>案例项目实战源码 点击跳转=>游戏脚本-辅助自动化 点击跳转=>Android控件全解手册

  8. 数据仓库系列(三)数仓分层的意义价值及如何设计数据分层

    文章目录 一.前言 二.数仓建模 三.数仓分层 四.数仓的基本特征 五.数据仓库用途 六.数仓分层的好处 七.如何分层 一.前言 现在说数仓,更多的会和数据平台或者基础架构搭上,已经融合到整个基础设施 ...

  9. 尺度空间理论与图像金字塔(二)

    SIFT简介 整理一下方便阅读,作者写的东西摘自论文,在此感谢xiaowei等的贡献 DoG尺度空间构造(Scale-space extrema detection)http://blog.csdn. ...

最新文章

  1. 分段路由SR应用场景—Vecloud
  2. 【攻防世界001】Guess-the-Number
  3. 洛谷P3295 [SCOI2016]萌萌哒(倍增+并查集)
  4. IBM将收购Red Hat:面向Java的初衷
  5. php nb2br,PHP中基本符号及使用方法
  6. 【LeetCode】剑指 Offer 31. 栈的压入、弹出序列
  7. camera hardware module
  8. Latex学习笔记 (5) 通用长度单位
  9. 启用视口着色:在视图窗口实时显示灯光照明效果_daiding
  10. 校园网如何实现网络共享
  11. [Synth 8-2543] port connections cannot be mixed ordered and named [“F:/FPGA_Prj/GPIC_2000/GPIC_AB/V1
  12. javascript汉字转拼音代码
  13. OpenGL ES2.0 的三种变量类型(uniform,attribute和varying)
  14. 一次性餐具 disposable dishware
  15. 细胞膜杂化脂质体载紫杉醇/红细胞膜包被雷公藤甲素-红素仿生共载脂质体的研究制备
  16. java古诗_古诗自动生成程序JAVA
  17. 孤立词语音识别(1)——利用HMM-GMM模型实现数字识别(完整收发系统)
  18. Neo4j 4.x版本与jdk11的下载
  19. java操作XMLType的几种方法
  20. Unity读写飞控参数mavlink

热门文章

  1. 3、Spring Cloud - Eureka(高可用Eureka Server集群)
  2. JAVA学习资源网站
  3. JDK源码学习笔记——Integer
  4. Redis的字典扩容与ConcurrentHashMap的扩容策略比较
  5. 关于CSS 3 及浏览器兼容性问题
  6. 中国铁建内网漫游沦陷多个重要部门泄漏大量信息(redis+ssh-keygen免认证登录案例)...
  7. 使用P3P共享Cookie与Session小结
  8. HDU 2955 Robberies
  9. python在内存中生成Zip文件!
  10. apache +mod_jk URL中文乱码