UVA 12075 - Counting Triangles(容斥原理计数)

时间:2023-01-16 00:14:45

题目链接:12075 - Counting Triangles

题意:求n * m矩形内,最多能组成几个三角形
这题和UVA 1393类似,把总情况扣去三点共线情况,那么问题转化为求三点共线的情况,对于两点,求他们的gcd - 1,得到的就是他们之间有多少个点,那么情况数就能够求了,然后还是利用容斥原理去计数,然后累加出答案
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; const int N = 1005;
long long n, m, dp[N][N];
int cas; long long gcd(long long a, long long b) {
if (b == 0) return a;
return gcd(b, a % b);
} void init() {
cas = 0;
for (int i = 2; i <= 1000; i++)
for (int j = 2; j <= 1000; j++)
dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] + gcd(i, j) - 1;
for (int i = 2; i <= 1000; i++)
for (int j = 2; j <= 1000; j++)
dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1];
} long long C(long long n, long long m) {
if (m > n) return 0;
m = min(m, n - m);
long long ans = 1;
for (long long i = 0; i < m; i++)
ans = ans * (n - i) / (i + 1);
return ans;
} int main() {
init();
while (~scanf("%lld%lld", &n, &m) && n || m) {
n++; m++;
printf("Case %d: %lld\n", ++cas, C(n * m, 3) - n * C(m, 3) - m * C(n, 3) - dp[n - 1][m - 1] * 2);
}
return 0;
}

UVA 12075 - Counting Triangles(容斥原理计数)的更多相关文章

  1. UVA 12075 Counting Triangles

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  2. UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)

    先看第一题,有n*m个点,求在这些点中,有多少条直线,经过了至少两点,且不是水平的也不是竖直的. 分析:由于对称性,我们只要求一个方向的线即可.该题分成两个过程,第一个过程是求出n*m的矩形中,dp[ ...

  3. UVA 10574 - Counting Rectangles&lpar;枚举&plus;计数&rpar;

    10574 - Counting Rectangles 题目链接 题意:给定一些点,求可以成几个边平行于坐标轴的矩形 思路:先把点按x排序,再按y排序.然后用O(n^2)的方法找出每条垂直x轴的边,保 ...

  4. hdu 1396 Counting Triangles&lpar;递推&rpar;

    Counting Triangles Problem Description Given an equilateral triangle with n thelength of its side, p ...

  5. Counting Triangles&lpar;hd1396&rpar;

    Counting Triangles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. Luogu3605 &lbrack;USACO17JAN&rsqb;Promotion Counting晋升者计数

    Luogu3605 [USACO17JAN]Promotion Counting晋升者计数 给一棵 \(n\) 个点的树,点 \(i\) 有一个权值 \(a_i\) .对于每个 \(i\) ,求 \( ...

  7. 线段树合并 &vert;&vert; 树状数组 &vert;&vert; 离散化 &vert;&vert; BZOJ 4756&colon; &lbrack;Usaco2017 Jan&rsqb;Promotion Counting &vert;&vert; Luogu P3605 &lbrack;USACO17JAN&rsqb;Promotion Counting晋升者计数

    题面:P3605 [USACO17JAN]Promotion Counting晋升者计数 题解:这是一道万能题,树状数组 || 主席树 || 线段树合并 || 莫队套分块 || 线段树 都可以写..记 ...

  8. UVA&period;11806 Cheerleaders &lpar;组合数学 容斥原理 二进制枚举&rpar;

    UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举) 题意分析 给出n*m的矩形格子,给出k个点,每个格子里面可以放一个点.现在要求格子的最外围一圈的每行每列,至少要放一个 ...

  9. 树状数组 P3605 &lbrack;USACO17JAN&rsqb;Promotion Counting晋升者计数

    P3605 [USACO17JAN]Promotion Counting晋升者计数 题目描述 奶牛们又一次试图创建一家创业公司,还是没有从过去的经验中吸取教训--牛是可怕的管理者! 为了方便,把奶牛从 ...

随机推荐

  1. gulp复制整个文件夹或文件到指定目录(包括拷贝单个文件)

    整个目录: gulp.task('copy', function() { return gulp.src('src/**/*') .pipe(gulp.dest('dist')) }); gulp拷贝 ...

  2. 【圣诞特献】Web 前端开发精华文章推荐【系列二十一】

    <Web 前端开发精华文章推荐>2013年第九期(总第二十一期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和  ...

  3. Strust2 初体验

    Struts2的第一个案例 首先我们需要引入架包 entity: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package ...

  4. Bzoj 1336&amp&semi;1337 Alien最小圆覆盖

    1336: [Balkan2002]Alien最小圆覆盖 Time Limit: 1 Sec  Memory Limit: 162 MBSec  Special Judge Submit: 1473  ...

  5. Codeforces Round &num;521 &lpar;Div&period; 3&rpar;

    B 题过的有些牵强,浪费了很多时间,这种题一定想好思路和边界条件再打,争取一发过.  D 题最开始读错题,后面最后发现可以重复感觉就没法做了,现在想来,数据量大,但是数据范围小枚举不行,二分还是可以的 ...

  6. pytorch torchvision对图像进行变换

    class torchvision.transforms.Compose(转换) 多个将transform组合起来使用. class torchvision.transforms.CenterCrop ...

  7. (下一篇博客)提示5G信道

    原本注册这个博客是要不定期更新一些产品的测试内容的 但由于一些个人原因并没有坚持去做到, 每次有点子的时候却没能来得及记下来导致很内容的缺失 接下来将关键点以图片形式 和一些摘要形式先发上来, 已做备 ...

  8. pythonweb框架Flask学习笔记02-一个简单的小程序

    #-*- coding:utf-8 -*- #导入了Flask类 这个类的实例将会是我们的WSGI应用程序 from flask import Flask #创建一个Flask类的实例 第一个参数是应 ...

  9. 数据导入报错 Got a packet bigger than&OpenCurlyQuote;max&lowbar;allowed&lowbar;packet’bytes

    数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题 2个解决方法: 1.临时修改:mysql>set global max_a ...

  10. &lbrack;转&rsqb;ASP&period;NET MVC 5 - 验证编辑方法&lpar;Edit method&rpar;和编辑视图&lpar;Edit view&rpar;

    在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie ...