日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UVa11134

發布時間:2023/11/30 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVa11134 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目分析】

覺得是一道挺考驗貪心掌握程度的題目,我就算知道是要用貪心而且肯定和區間有關,肯定要進行一下排序什么的我還是沒有找到合適的貪心策略。

經過大佬的博客后我才明白如何進行貪心。

如果沒有任何提示看這道題,首先,我們要有將復雜問題分解的能力,即這里要發現兩個維度之間是沒有什么關系的,所以可以分開進行然后在一起輸出結果。

其次,我們要找到合適的貪心策略。正如大佬所說,貪心是問題導向的,我們不能盲目的排一下序然后試試,要觀察問題想要的是什么。在這里,我們想要的是每個行(列也是相同的,這里就都當作行進行討論)都有一個車。我們考慮從前往后放車,放哪個車比較合適呢?有很多車子的可行區間都包含這個點,我們要在這些車里面選擇哪一個?直觀上我們選取右區間最小的包含這個點的車最好(當然是沒有被選過的)。想到這個策略需要一些靈感,而這個策略的正確性也是可以直觀上感受的:從前往后我們每個格子選擇的車都是右區間最小的,那么這就給后面的車留下了更多的可能性,總是最優的。

這里的車是一種必要的競爭關系,盡可能的減少對手就能夠使后面的選擇更加游刃有余,如果很多可以選擇后面的車選擇了前面,那么后面的行就面臨沒有車可以選的危險。

emmm,正確性應該也是可以證明的,但是想到這種貪心策略分析正確性的時候我們不會進行嚴格的數學證明(還是太笨,這樣太慢太浪費時間),更多的是依靠直(xuan)覺(xue)。

【AC代碼】

#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<iostream> #include<cmath> #include<climits> #include<queue> #include<vector> #include<set> #include<map> using namespace std;typedef long long ll; const int INF=0x3f3f3f3f; const int MAXN=5e3+5; int n; struct node {int l,r,idx; }a1[MAXN],a2[MAXN];int vis[MAXN];int b1[MAXN],b2[MAXN];bool cmp(node &a,node &b) {return a.r<b.r; }int main() {while(~scanf("%d",&n) && n){for(int i=1;i<=n;i++){scanf("%d%d%d%d",&a1[i].l,&a2[i].l,&a1[i].r,&a2[i].r);a1[i].idx=a2[i].idx=i;}sort(a1+1,a1+1+n,cmp);memset(vis,0,sizeof(vis));bool flag;for(int i=1;i<=n;i++){flag=false;for(int j=1;j<=n;j++){if(!vis[j] && a1[j].l<=i && a1[j].r>=i){vis[j]=true; b1[a1[j].idx]=i;flag=true;break;}}if(!flag) break;}if(!flag){printf("IMPOSSIBLE\n");continue;}sort(a2+1,a2+1+n,cmp);memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++){flag=false;for(int j=1;j<=n;j++){if(!vis[j] && a2[j].l<=i && a2[j].r>=i){vis[j]=true; b2[a2[j].idx]=i;flag=true;break;}}if(!flag) break;}if(!flag){printf("IMPOSSIBLE\n");continue;}for(int i=1;i<=n;i++){printf("%d %d\n",b1[i],b2[i]);}}return 0; }

總結

以上是生活随笔為你收集整理的UVa11134的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。