烦人的幻灯片(信息学奥赛一本通-T1395)
【題目描述】
李教授將于今天下午作一次非常重要的演講。不幸的事他不是一個非常愛整潔的人,他把自己演講要用的幻燈片隨便堆在了一起。因此,演講之前他不得不去整理這些幻燈片。作為一個講求效率的學者,他希望盡可能簡單地完成它。教授這次演講一共要用n張幻燈片(n≤26),這n張幻燈片按照演講要使用的順序已經用數字1~n編了號。因為幻燈片是透明的,所以我們不能一下子看清每一個數字所對應的幻燈片。
現在我們用大寫字母A,B,C……再次把幻燈片依次編號。你的任務是編寫一個程序,把幻燈片的數字編號和字母編號對應起來,顯然這種對應應該是唯一的;若出現多種對應的情況或是某些數字編號和字母編號對應不起來,我們稱對應是無法實現的。
【輸入】
第一行只有一個整數n,表示有n張幻燈片,接下來的n行每行包括4個整數xmin,xmax,ymin,ymax(整數之間用空格分開)為幻燈片的坐標,這n張幻燈片按其在文件中出現的順序從前到后依次編號為A,B,C……,再接下來的n行依次為n個數字編號的坐標x,y,顯然在幻燈片之外是不會有數字的。
【輸出】
若是對應可以實現,輸出文件應該包括n行,每一行為一個字母和一個數字,中間以一個空格隔開,并且每行以字母的升序排列,注意輸出的字母要大寫并且定格;反之,若是對應無法實現,在文件的第一行頂格輸出None即可。首行末無多余的空格。
【輸入樣例】
4
6 22 10 20
4 18 6 16
8 20 2 18
10 24 4 8
9 15
19 17
11 7
21 11
【輸出樣例】
A 4
B 1
C 2
D 3
【源程序】
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<vector> #include<set> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 101 #define MOD 123 #define E 1e-6 using namespace std; int g[N][N],side[N],sum[N]; int main() {int n;int x1[27],x2[27],y1[27],y2[27];cin>>n;for(int i=1;i<=n;i++)cin>>x1[i]>>x2[i]>>y1[i]>>y2[i];for(int i=1;i<=n;i++){int x,y;cin>>x>>y;for(int j=1;j<=n;j++)if(x1[j]<=x && x<=x2[j] && y1[j]<=y && y<=y2[j]){g[i][j]=1;side[j]++;}}int num=0;int temp;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(side[j]==1){num++;side[j]--;for(int k=1;k<=n;k++)if(g[k][j]){g[k][j]=0;temp=k;sum[j]=k;break;}for(int k=1;k<=n;k++)if(g[temp][k]){g[temp][k]=0;side[k]--;}}if(num==n)for(int i=1;i<=n;i++)cout<<(char)(i-1+'A')<<" "<<sum[i]<<endl;elsecout<<"None"<<endl;return 0; }?
總結
以上是生活随笔為你收集整理的烦人的幻灯片(信息学奥赛一本通-T1395)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基础算法 —— 递推算法
- 下一篇: Bad Hair Day(POJ-325