uva1504(模拟+暴力)
来源:互联网 发布:美化状态栏的软件 编辑:程序博客网 时间:2024/06/05 07:31
题意:
给出第一象限的n个矩形的左下角坐标和右上角坐标,我们先把所有矩形向下移动,直至所有矩形都不能移动,然后把所有矩形都向左移动,直至所有矩形都不能移动,如此往复,直至所有矩形都不能移动,问最后所有矩形能覆盖到的x和y的最大值。
思路:
最开始以为是线段树,不知道该怎么写,而且巨麻烦,后来旁边的丧失说暴力。。。暴力!!!
那就暴力吧,我们每次对所有矩形进行移动的时候先对矩形进行排序,第一次移动按y排序,第二次按x排序,第三次按y排序。。。如此往复,直到所有矩形都不能动,输出答案即可。
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#include<vector>#include<map>#include<stack>#include<cmath>#include<cstdlib>#include<climits>#include<sstream>using namespace std;struct REC{int x1,x2,y1,y2;}rec[600];int cmp1(REC a,REC b){if(a.y1==b.y1)return a.x1<b.x1;return a.y1<b.y1;}int cmp2(REC a,REC b){if(a.x1==b.x1)return a.y1<b.y1;return a.x1<b.x1;}int main(){int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d%d%d",&rec[i].x1,&rec[i].y1,&rec[i].x2,&rec[i].y2);rec[0].x1=0;rec[0].y1=0;rec[0].x2=0;rec[0].y2=0;for(int i=1;;i++){int flag=0;if(i%2){sort(rec,rec+1+n,cmp1);for(int j=1;j<=n;j++){int tx1=rec[j].x1;int tx2=rec[j].x2;//printf("x= %d %d\n",tx1,tx2);int ymax=0;for(int k=0;k<j;k++){int lx1=rec[k].x1;int lx2=rec[k].x2;if(lx1>=tx2||lx2<=tx1)continue;else ymax=max(ymax,rec[k].y2);}//printf("ymax= %d\n",ymax);int sub=rec[j].y1-ymax;//printf("sub= %d\n",sub);if(sub>0){rec[j].y1-=sub;rec[j].y2-=sub;flag=1;//puts("-------------1");}}}else{sort(rec,rec+1+n,cmp2);for(int j=1;j<=n;j++){int ty1=rec[j].y1;int ty2=rec[j].y2;int xmax=0;for(int k=0;k<j;k++){int ly1=rec[k].y1;int ly2=rec[k].y2;if(ly1>=ty2||ly2<=ty1)continue;else xmax=max(xmax,rec[k].x2);}int sub=rec[j].x1-xmax;if(sub>0){rec[j].x1-=sub;rec[j].x2-=sub;flag=1;//puts("-------------2");}}}//for(int j=1;j<=n;j++)//printf("%d %d %d %d\n",rec[j].x1,rec[j].y1,rec[j].x2,rec[j].y2);//puts("-----------------------------");if(flag==0)break;}int xmax=-1,ymax=-1;for(int i=1;i<=n;i++){xmax=max(xmax,rec[i].x2);ymax=max(ymax,rec[i].y2);}printf("%d %d\n",xmax,ymax);}return 0;}
0 0
- uva1504(模拟+暴力)
- HDU **** 暴力模拟
- HLJUOJ1117(暴力模拟)
- uva10273(暴力模拟)
- HDU2555(模拟暴力)
- 【模拟】【暴力】[COCI]排序
- 模拟暴力 uva12108
- HDU6168(暴力模拟)
- POJ 1013 小水题 暴力模拟
- 1035 Spell checker 暴力模拟
- UVA 140 Bandwidth 暴力模拟
- Uva10288(概率期望+暴力模拟)
- HDU 5071 Chat 暴力模拟
- [CodeForces318C]Perfect Pair[模拟][暴力]
- hdu 5386 Cover 暴力模拟
- POJ-1012-Joseph-暴力/模拟
- Codeforces 724B 暴力模拟
- codeforces 732D 模拟暴力
- EasyUI中tree,Datagrid,pagenation的使用EasyUI中Datagrid和pagenation进行关联时,再次点击pagenation时让表格数据显示的问题
- kvo kvc
- adb,sqlite3访问真机数据库的解决方案
- CPU Idle Introduction
- AngularJs 保存人员信息的方法
- uva1504(模拟+暴力)
- JZOJ1738. Heatwave
- sublime2 ubuntu 安装
- 查进程和杀进程命令 linux
- sharepoint2010迁移到2013后,帐号更新
- SQL面试经典
- c++11 中的 move 与 forward
- 枚举.values()表示得到全部的枚举内容,然后以对象数组的形式用foreach输出
- django-celery动态添加定时任务