uva1504(模拟+暴力)
生活随笔
收集整理的這篇文章主要介紹了
uva1504(模拟+暴力)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
給出第一象限的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; }總結
以上是生活随笔為你收集整理的uva1504(模拟+暴力)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu3695(AC自动机)
- 下一篇: uva1505(暴力)