http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1117

1117: 网格中的三角形

Time Limit: 3 Sec  Memory Limit: 64 MB
Submit: 35  Solved: 12
[Submit][Status][Web Board]

Description

有一个n行m列单位正方形组成的网格。不难发现一共有n+1条横线,m+1条竖线和它们形成的(n+1)(m+1)个交叉点。你可以选择三个不共线的交叉点,形成一个三角形。比如当n=m=1时,一共有4个交叉点,可以形成4个三角形。
问:有多少个三角形的面积在A和B之间(包含A和B)。
 

Input

输入第一行为数据组数T (T<=25)。每组数据为四个整数n, m, A, B (1<=n, m<=200, 0<=A<B<=nm)。

Output

对于每组数据,输出面积在A和B之间的三角形个数。
 

Sample Input

  1. 4
  2. 1 1 0 1
  3. 1 2 1 2
  4. 10 10 20 30
  5. 12 34 56 78

Sample Output

  1. 4
  2. 6
  3. 27492
  4. 1737488

HINT

 

Source

湖南省第八届大学生计算机程序设计竞赛

AC代码:

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6. typedef long long ll;
  7.  
  8. inline ll max(ll a, ll b) {
  9. return a > b ? a : b;
  10. }
  11.  
  12. inline ll min(ll a, ll b) {
  13. return a < b ? a : b;
  14. }
  15.  
  16. ll N, M, A, B;
  17.  
  18. ll solve (ll k) {
  19. if (k < )
  20. k = ;
  21.  
  22. if (N > M)
  23. swap(N, M);
  24.  
  25. ll ans = ;
  26. for (ll n = ; n <= N; n++) {
  27. for (ll m = ; m <= M; m++) {
  28. ll cnt = ;
  29.  
  30. if (n * m <= k)
  31. cnt += * (n + m - );
  32.  
  33. ll l, r;
  34. for (ll x = ; x <= n; x ++) {
  35. r = (m * x + k) / n;
  36.  
  37. if (r > m)
  38. r = m;
  39.  
  40. ll t = m * x - k;
  41.  
  42. if(t <= )
  43. l = ;
  44. else
  45. l = (t - ) / n + ;
  46.  
  47. if(l <= r)
  48. cnt += * (r - l + );
  49. }
  50.  
  51. for (ll x = ; x < n; x++) {
  52. ll tmp = n * m - x;
  53.  
  54. if (tmp <= k)
  55. cnt += * (m - );
  56. else {
  57. tmp = tmp - k;
  58. ll u = m- - min(tmp / x + (tmp % x != ), m-);
  59. cnt += * u;
  60. }
  61. }
  62. //printf("%lld %lld %lld\n",n , m, cnt);
  63. ans += cnt * (N - n + ) * (M - m + );
  64. }
  65. }
  66. return ans;
  67. }
  68.  
  69. int main () {
  70. int cas;
  71. scanf("%d", &cas);
  72. while (cas--) {
  73. scanf("%lld%lld%lld%lld", &N, &M, &A, &B);
  74. printf("%lld\n", solve(B*) - solve(A*-));
  75. }
  76. return ;
  77. }

csuoj 1117: 网格中的三角形的更多相关文章

  1. VMware 设备VMnet0 上的网桥暂时关闭。此虚拟机无法与主机或网格中的其他计算机通信【转】

    今天克隆了一个win7的虚拟机,移动到我的本地.打开时发现虚拟机网格连接图标出现X断开连接,于是网上收了一堆答案无一个可用的,决定自己解决这个问题,解决过程如下: 1.报错图如下:设备VMnet0 上 ...

  2. 网格中的BFS,逆向(POJ2049)

    题目链接:http://poj.org/problem?id=2049 解题报告: 网格中的BFS,最主要的是边界问题. 1.这里在左右,上下两个方向上,分别判断墙,和门,细节是,向上有t个墙,for ...

  3. 搜索(BFS)---计算在网格中从原点到特定点的最短路径长度

    计算在网格中从原点到特定点的最短路径长度 [[1,1,0,1], [1,0,1,0], [1,1,1,1], [1,0,1,1]] 题目描述: 1表示可以经过某个地方,求解从(0,0)位置到(tr,t ...

  4. C#中画三角形和填充三角形的简单实现

    C#中画三角形和填充三角形的简单实现: private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graph ...

  5. P2295 MICE 网格中的DP

    题目描述 分析 很好的一道网格中的\(DP\)题 我们设\(f[x][y]\)为小象到达坐标为\((x,y)\)的点时看到的最少的老鼠的数量 但是这样定义是不好转移的,因为小象可能从上面的格子转移下来 ...

  6. sigma网格中水平压力梯度误差及其修正

    1.水平梯度误差产生 sigma坐标系下,笛卡尔坐标内水平梯度项对应形式为 \[\begin{equation} \left. \frac{\partial }{\partial x} \right| ...

  7. Istio(十一):向istio服务网格中引入虚拟机

    目录 一.模块概览 二.系统环境 三.虚拟机负载 3.1 虚拟机负载 3.2 单网络架构 3.3 多网络架构 3.4 Istio 中如何表示虚拟机工作负载? 四.实战:向istio Mesh中引入虚拟 ...

  8. n行m列的网格中含有的矩形数

    给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形 公式:[ n(n+1)*m(m+1)]/4 直接想问题比较复杂,可以先考虑矩形的长,再考虑矩形的高,由对称性可知最后的结果中m和n对称 ...

  9. 【基础】在css中绘制三角形及相关应用

    简言 本文简要阐述了用CSS边框的方法在页面上绘制三角形,包括几种典型的三角形绘制,还介绍了几个简单的应用场景.利用边框绘制三角形方法只是众多方案中的一种,大家根据项目实际,选用最适宜项目的方案. 1 ...

随机推荐

  1. Java代码常用写法总结

    1.字符串是否为空判断 以下是java 判断字符串是否为空的四种方法:方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equal ...

  2. JSON和JSONP (含jQuery实例)(share)

    来源:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 前言: 说到AJAX就会不可避免的面临两个问 ...

  3. 转: BAT等研发团队的技术博客

    BAT 技术团队博客   1. 美团技术团队博客:  地址: http://tech.meituan.com/ 2. 腾讯社交用户体验设计(ISUX) 地址:http://isux.tencent.c ...

  4. CSS常用属性

    //边界线 border: 1px solid #E4E4E4; //绝对 定位 position: absolute; //相对定位 position: relative; //超出部分隐藏 ove ...

  5. log4j mongoDB配置

    log4j.rootCategory=INFO, stdout log4j.appender.stdout=org.springframework.data.document.mongodb.log4 ...

  6. Angular2对待一个URL的处理流程

    直到一年前我还不会想到我会写一本书出来,直到两三年前我还不会想到会把自己的业余时间放在写作(技术博客)上.当初在机缘巧合之下,我只是想把自己工作中遇到的问题总结起来,发布在博客中以供日后查阅.不想竟然 ...

  7. Yii源码阅读笔记(三十)

    Widget类是所有小部件的基类,开始,结束和渲染小部件内容的方法的注释: namespace yii\base; use Yii; use ReflectionClass; /** * Widget ...

  8. 深入解析PHP中逗号与点号的区别

    大部分同学都知道逗号要比点号快,但就是不知道为什么,更不知道逗号与点号这两者之间到底有什么区别.下面小编就来详细的为大家介绍一下,需要的朋友可以过来参考下 echo 'abc'.'def'; //用点 ...

  9. wget

    Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到 本地服务器.如果我们使用虚拟主机,处理这样 ...

  10. Ionic2 开发环境搭建

    Ionic2开发环境要求: Nodejs V4.5.0 Nodejs自带 Npm V2.15.9 同上 Ionic V2.1.0 安装最新ionic即可 Angular2 V2正式版 同上 说明:以上 ...