百度之星 2015 复赛 1001 (数长方形)

2024-09-07 18:38

本文主要是介绍百度之星 2015 复赛 1001 (数长方形),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数长方形

 
 Accepts: 595
 
 Submissions: 1225
 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 32768/32768 K (Java/Others)
Problem Description

小度熊喜欢玩木棒。一天他在玩木棒的时候,发现一些木棒会形成长方形。小度熊可能是处女座吧,他只会将木棒横竖摆放,这样会形成很多长方形。现在给你一些横竖摆放的木棒,请你帮小度熊数一数形成了多少个长方形。

为了简化题目,一个木棒的端点不会在另一个木棒上,也就是说,木棒的端点不会在长方形上。

Input

第一行一个整数T,表示T组数据,不超过100组。

每组数据中,第一行是n,代表有多少个木棒,n不会超过25。接下来n行,每行4个整数 x1,y1,x2,y2 ,代表木棒的坐标,绝对值不超过1000。

所有的木棒都是横竖摆放的,也就是说 x1=x2 或者 y1=y2 ,没有长为0的木棒。

Output

对于每组测试数据,先输出一行

Case #i:

然后输出一个整数,代表有多少个长方形。

Sample Input
2
4
3 0 3 3
4 0 4 3
2 1 5 1
2 2 5 2
4
3 0 3 3
4 0 4 3
2 1 5 1
2 2 -5 2
Sample Output
Case #1:
1
Case #2:
0

直接暴力,每次枚举4条线段,判断是否有4个交点,有的话ans++

#include <iostream>
#include <cstdio>
#include <stack>
#include <string>
#include <sstream>
#include <cstring>
using namespace std;
const int SIZE=33119;
typedef struct NODE  
{int x1,x2;int y1,y2;};
NODE a[SIZE];bool check(int i, int j)
{if(a[i].x1 == a[i].x2 && a[j].x1 != a[j].x2){return a[i].x1 >= a[j].x1 && a[i].x1 <= a[j].x2 && a[i].y1 <= a[j].y1 && a[i].y2 >= a[j].y1;}else if( a[i].x1 != a[i].x2 && a[j].x1 == a[j].x2){return a[j].x1 >= a[i].x1 && a[j].x1 <= a[i].x2 && a[j].y1 <= a[i].y1 && a[j].y2 >= a[i].y1;}return false;
}bool solve(int b,int c, int d, int e)
{int w[4] = {b,c,d,e};int num = 0;for(int i = 0; i < 4; i++)for(int j = i+1; j < 4; j++)if(check(w[i],w[j])) num++;return num == 4;
}int main()
{#ifdef xxzfreopen("in.txt","r",stdin);#endif // xxint n,i,j,T;scanf("%d",&T);int Case = 1;while (T--){scanf("%d",&n);for(int i = 0; i < n; i++){scanf("%d%d%d%d",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);if(a[i].x1 > a[i].x2) swap(a[i].x1,a[i].x2);if(a[i].y1 > a[i].y2) swap(a[i].y1,a[i].y2);}int ans = 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(solve(i,j,k,l)) ans++;printf("Case #%d:\n",Case++);printf("%d\n",ans);}return 0;
}


这篇关于百度之星 2015 复赛 1001 (数长方形)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145846

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

Imageview在百度地图中实现点击事件

1.首先第一步,需要声明的全局有关类的引用 private BMapManager mBMapMan; private MapView mMapView; private MapController mMapController; private RadioGroup radiogroup; private RadioButton normalview; private RadioBu

CF Bayan 2015 Contest Warm Up B.(dfs+暴力)

B. Strongly Connected City time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/probl

CF Bayan 2015 Contest Warm Up A.(模拟+预处理)

A. Bayan Bus time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/problem/A The fi

2015年校赛总结

题目名为“校赛总结”,其实更想换成“Rainbow为什么五题滚粗?!”。作为今年校赛大二没拆的两个队伍之一,结果打成这样,没脸见人了,总结起来就是我认为自己今天SB了。主要有以下几点: 1.我今天状态的确不好,最后卡的那道B题跟去年在农大校赛上遇见的那题类似,在最后那段时间我已经有思路了,可是由于当时不敢写。等到最后15分钟才开始敲,加上我用很麻烦的Dijstra那种方法,调试起来好多细节要处理

百度之星 2015 初赛(1) 1002 找连续数

找连续数      Accepts: 401      Submissions: 1911  Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是

百度之星初赛1002(二分搜索)

序列变换    Accepts: 816    Submissions: 3578  Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 给定序列 A={A1,A2,...,An} , 要求改变序列A中

百度之星初赛1006(计算几何:能包含凸包的最小矩形面积)

矩形面积    Accepts: 717    Submissions: 1619  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些

2015多校联合训练第三场Work(hdu5326)

题意: a是b的上司,b是c的上司,则a是c的上司,问构成一个树种,有多人是 k个人的上司 思路: 先找出root,然后dfs一下就行 #include <bits/stdc++.h>#define LL long longusing namespace std;const int MAXN = 1e6;int f[105];int n, k;int mp[101][101];

2015年多校联合训练第三场RGCDQ(hdu5317)

题意: f(i)代表i数中有的素数的种数,给出区间[l,r],求区间内max(gcd(f(i))), 由于i最大是1e6,2*3*5*7*11*13*17>1e6,故最多不超过7种素数, 先打表打出1e6内的素数种数表,然后用sum[i][j]代表1-i个数中,还有j个素数的个数,最后用sum[r][j] - sum[l-1][j]求出区间内含有j个素数的数的个数,暴力找出1,2,3,4,5