HDU5258(百度之星复赛1001)——数长方形(暴力)
来源:互联网 发布:淘宝店铺卖家信用等级 编辑:程序博客网 时间:2024/05/16 04:53
题目描述
小度熊喜欢玩木棒。一天他在玩木棒的时候,发现一些木棒会形成长方形。小度熊可能是处女座吧,他只会将木棒横竖摆放,这样会形成很多长方形。现在给你一些横竖摆放的木棒,请你帮小度熊数一数形成了多少个长方形。
为了简化题目,一个木棒的端点不会在另一个木棒上,也就是说,木棒的端点不会在长方形上。
第一行一个整数T,表示T组数据,不超过100组。
每组数据中,第一行是n,代表有多少个木棒,n不会超过25。接下来n行,每行4个整数x1,y1,x2,y2,代表木棒的坐标,绝对值不超过1000。
所有的木棒都是横竖摆放的,也就是说x1=x2或者y1=y2,没有长为0的木棒。
题目分析
由于N比较小,所以可以直接枚举所有可能的组合方式,然后检查这四根木棒是否能够组成矩形。
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <vector>using namespace std;typedef long long LL;const int MOD = 1e9 + 7;const int INF = 0x7fffffff;const int N = 100 + 10;int n, m;struct line { int x1, x2, y1, y2;} L[N];bool iscross(int i, int j) { if(L[i].x1 == L[i].x2 && L[j].x1 != L[j].x2) { return L[i].y1 <= L[j].y1 && L[j].y1 <= L[i].y2 && L[j].x1 <= L[i].x1 && L[i].x1 <= L[j].x2; } else if(L[i].x1 != L[i].x2 && L[j].x1 == L[j].x2) { return L[j].y1 <= L[i].y1 && L[i].y1 <= L[j].y2 && L[i].x1 <= L[j].x1 && L[j].x1 <= L[i].x2; } return 0;}bool check(int l1, int l2, int l3, int l4) { int a[4] = {l1, l2, l3, l4}; int cnt = 0; for(int i = 0; i < 4; i++) { for(int j = i + 1; j < 4; j++) { if(iscross(a[i], a[j])) cnt++; } } return cnt == 4;}int main() {#ifdef TYH freopen("in.txt", "r", stdin);#endif // TYH int T; scanf("%d", &T); for(int ca = 1; ca <= T; ca++) { printf("Case #%d:\n", ca); scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d%d%d%d", &L[i].x1, &L[i].y1, &L[i].x2, &L[i].y2); if(L[i].x2 < L[i].x1) swap(L[i].x2, L[i].x1); if(L[i].y2 < L[i].y1) swap(L[i].y2, L[i].y1); } int cnt = 0; for(int i = 0; i < n; i++) { for(int j = i + 1; j < n; j++) { for(int k = j + 1; k < n; k++) { for(int l = k + 1; l < n; l++) { if(check(i, j, k, l)) cnt++; } } } } printf("%d\n", cnt); } return 0;}
0 0
- HDU5258(百度之星复赛1001)——数长方形(暴力)
- 2015百度之星复赛(hdu5258 - 5262)
- 百度之星 2015 复赛 1001 (数长方形)
- 寒假集训四之判断长方形问题 hdu5258 暴力枚举
- hdu 5258 数长方形-2015年百度之星程序设计大赛 - 复赛
- 百度之星复赛--Arithmetic of Bomb----暴力
- [百度之星复赛T5]
- 百度之星复赛题解
- 2017百度之星 复赛
- 2014百度之星复赛解题报告复赛:Race
- 2017百度之星复赛1001 Arithmetic of Bomb
- 2017百度之星复赛1001 Arithmetic of Bomb
- HDU5259(百度之星复赛1002)——弹吉他(DP)
- 赛题集锦—2008年百度之星程序设计大赛复赛题目
- 2007年百度之星复赛试题
- 【百度之星复赛】最强密码
- hdu5714 百度之星复赛C
- 百度之星复赛Valley Numer II
- 流程自动化布局
- osg窗口的创建(三)
- 一个不错的shell 脚本教程 入门级
- Android中ViewPager的使用
- 欢迎使用CSDN-markdown编辑器
- HDU5258(百度之星复赛1001)——数长方形(暴力)
- Word文档生成
- 广度与深度
- KindEditor
- 如何快速开发网站?
- CMakeLIsts
- LIBSVM 在matlab中应用的错误
- Android用onCreateOptionsMenu()创建optinosMenu
- 调整数组顺序使奇数位于偶数前面