没参加的2015百度之星——数矩形
2015-07-20 19:14
465 查看
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=5258
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
Source
2015年百度之星程序设计大赛
- 复赛
暴力枚举,注意判断方式!
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
struct node{
int x1,y1,x2,y2;
void in(){
cin>>x1>>y1>>x2>>y2;
if(x1>x2)swap(x1,x2);
if(y1>y2)swap(y1,y2);
}
};
vector <node> px;
vector <node> py;
bool jx(int i,int j){
if(px[i].x1==px[j].x1)return false;
if(px[i].y1>=px[j].y2-2)return false;
if(px[i].y2<=px[j].y1+2)return false;
return true;
}
bool jy(int i,int j){
if(py[i].y1==py[j].y1)return false;
if(py[i].x1>=py[j].x2-2)return false;
if(py[i].x2<=py[j].x1+2)return false;
return true;
}
bool judge(node a,node b,node c,node d){
int x1=max(c.x1,d.x1);
int x2=min(c.x2,d.x2);
int y1=max(a.y1,b.y1);
int y2=min(a.y2,b.y2);
if(x1<a.x1 && a.x2<x2 && x1<b.x1 && b.x2<x2)
if(y1<c.y1 && c.y2<y2 && y1<d.y1 && d.y2<y2 )
return true;
return false;
}
int main(){
int T;cin>>T;
int CA=1;
while(T--){
int n;cin>>n;
px.clear();
py.clear();
for(int i=1;i<=n;i++){
node tmp;tmp.in();
if(tmp.x1==tmp.x2)px.push_back(tmp);
else py.push_back(tmp);
}
cout<<"Case #"<<CA++<<":"<<endl;
int lenx=px.size();
int leny=py.size();
int ans=0;
for(int i=0;i<lenx;i++){
for(int j=i+1;j<lenx;j++){
if(jx(i,j)==false)continue;
for(int k=0;k<leny;k++){
for(int t=k+1;t<leny;t++){
if(jy(k,t)==false)continue;
bool ok=judge(px[i],px[j],py[k],py[t]);
if(ok)ans++;
}
}
}
}
cout<<ans<<endl;
}
return 0;
}
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
Source
2015年百度之星程序设计大赛
- 复赛
暴力枚举,注意判断方式!
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
struct node{
int x1,y1,x2,y2;
void in(){
cin>>x1>>y1>>x2>>y2;
if(x1>x2)swap(x1,x2);
if(y1>y2)swap(y1,y2);
}
};
vector <node> px;
vector <node> py;
bool jx(int i,int j){
if(px[i].x1==px[j].x1)return false;
if(px[i].y1>=px[j].y2-2)return false;
if(px[i].y2<=px[j].y1+2)return false;
return true;
}
bool jy(int i,int j){
if(py[i].y1==py[j].y1)return false;
if(py[i].x1>=py[j].x2-2)return false;
if(py[i].x2<=py[j].x1+2)return false;
return true;
}
bool judge(node a,node b,node c,node d){
int x1=max(c.x1,d.x1);
int x2=min(c.x2,d.x2);
int y1=max(a.y1,b.y1);
int y2=min(a.y2,b.y2);
if(x1<a.x1 && a.x2<x2 && x1<b.x1 && b.x2<x2)
if(y1<c.y1 && c.y2<y2 && y1<d.y1 && d.y2<y2 )
return true;
return false;
}
int main(){
int T;cin>>T;
int CA=1;
while(T--){
int n;cin>>n;
px.clear();
py.clear();
for(int i=1;i<=n;i++){
node tmp;tmp.in();
if(tmp.x1==tmp.x2)px.push_back(tmp);
else py.push_back(tmp);
}
cout<<"Case #"<<CA++<<":"<<endl;
int lenx=px.size();
int leny=py.size();
int ans=0;
for(int i=0;i<lenx;i++){
for(int j=i+1;j<lenx;j++){
if(jx(i,j)==false)continue;
for(int k=0;k<leny;k++){
for(int t=k+1;t<leny;t++){
if(jy(k,t)==false)continue;
bool ok=judge(px[i],px[j],py[k],py[t]);
if(ok)ans++;
}
}
}
}
cout<<ans<<endl;
}
return 0;
}
相关文章推荐
- javascript 绘制矩形框
- C#使用GDI绘制矩形的方法
- Python判断直线和矩形是否相交的方法
- C#画圆角矩形的方法
- PHP实现的简单三角形、矩形周长面积计算器分享
- pygame学习笔记(1):矩形、圆型画图实例
- 用fail2ban阻止SSH和VSFTP暴力破解密码
- 总结一下最近做的计算几何学到的知识
- 2015BJOI day1第三题 糖果candy
- 4495: Least Prime factor 找到最小质因子P的第N小正整数
- 判断某一点是否在矩形中的问题
- csu1503 点到圆弧的距离
- 2014 百度之星资格赛 1001 Energy Conversion
- HDU2080 夹角有多大II 几何
- Core Graphics : 线,矩形和渐变效果
- Codeforce Maximal Area Quadrilateral
- 百度之星2014 资格赛 1001 Energy Conversion
- [BZOJ1069][SCOI2007][凸包][旋转卡壳]最大土地面积
- 2014百度之星资格赛1004 度度熊走迷宫 Labyrinth
- 2014百度之星1001