Highways UVA
来源:互联网 发布:河北省中标数据网 编辑:程序博客网 时间:2024/06/06 17:11
首先根据对称性可以得出'\'的数量和'/'的数量是相等的,所以只要考虑其中的一种,将得到的结果*2就可以得到最终的结果,将每个都能由线形成的方框都看成一个盒子,同时对于这些点而言,最左边并且最上边的点的位置记为原点,那么每个盒子的长和宽就可以很简单的得到了,然后如果该盒子的长宽存在不是1的最大公约数,说明这个大盒子里存在小盒子,直接舍去。如果满足上述条件,放置盒子的时候要将盒子尽量靠左靠上,这样就形成了对应的盒子左上角的坐标的范围,减去那些可能左上角仍然存在盒子的情况,最后将所有的答案加起来乘2即可,具体实现见如下代码:
#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>#include<deque>#include<functional>using namespace std;int n, m;int record[310][310];int gcd(int a, int b){if (b == 0) return a;return gcd(b,a%b);}void Init(){for (int i = 1; i <= 300; i++)for (int j = 1; j <= 300; j++)record[i][j] = gcd(i, j);}int main(){Init();while (cin >> n >> m){if (n == 0 && m == 0) break;int ans = 0;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (record[i][j] == 1){int amount = (n - i)*(m - j);int amount2 = max(0, n - 2 * i)*max(0, m - 2 * j);ans += (amount - amount2);}}}cout << ans*2 << endl;}return 0;}
阅读全文
0 0
- Highways UVA
- Uva 10147 - Highways
- UVa:1393 Highways
- UVA 1393 - Highways
- UVA - 1393 Highways
- UVA 1393 - Highways
- UVa 10147 - Highways
- uva 1393 Highways
- UVA 1393Highways
- UVa 1393 Highways
- UVA 1393 - Highways (容斥原理计数)
- uva 1393 - Highways(容斥原理)
- Highways
- Highways
- Highways
- Highways
- Highways
- Highways
- 如何创建一个插件
- vim插件1--taglist
- 自定义View系列之ViewPager实现广告条效果
- PAT (Basic Level) Practise (中文)1050. 螺旋矩阵(25)
- ARP与RARP
- Highways UVA
- backpropagation
- tcp、ip协议概述
- Thinkphp5 微信公众号token验证不成功的原因
- spring+springMVC+hibernate事务配置
- 严蔚敏版数据结构学习笔记(1):线性表的顺序表示和实现
- HDU
- Spark性能优化指南——高级篇
- tcp协议三次握手、四次挥手及其他