POJ 1486 Sorting Slides
题意:有一堆透明的堆叠的幻灯片,记为A,B,C…给出每张幻灯片的坐标范围,以及每个幻灯片上有其序号1,2,3…给出这个序号的坐标。问最多能确定哪几张幻灯片的序号。
解法:即求最大匹配的必须边。从每一张包含某序号坐标的幻灯片字母标记,向序号连一条边,构成二分图。求出最大匹配,然后每次删除最大匹配中的一条边后求最大匹配,最大匹配数发生改变的充要条件是删除了必须边,用这个方法判别必须边与非必须边,按字典序输出即可。
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
struct abc
{
int x1,x2,y1,y2;
}let[30];
int g[60][60],links[60],b[60],m,n,t,ans,now;
string s[6000];
bool find(int a)
{
for(int i=1;i<=n;i++)
if(g[a][i]==1 && !b[i]){
b[i]=1;
if(links[i]==0 || find(links[i])){
links[i]=a;
return true;
}
}
return false;
}
int main()
{
int i,j,k,x,y;
while(1){
scanf("%d",&n);
if(n==0) break;
pair<int ,int> q[100000];
t++;ans=0;
int l=1,r=1;
memset(q,0,sizeof(q));
memset(g,0,sizeof(g));
memset(links,0,sizeof(links));
printf("Heap %d\n",t);
for(i=1;i<=n;i++)
scanf("%d%d%d%d",&let[i].x1,&let[i].x2,&let[i].y1,&let[i].y2);
for(i=1;i<=n;i++){
scanf("%d%d",&x,&y);
for(j=1;j<=n;j++)
if(x<=let[j].x2 && x>=let[j].x1 && y>=let[j].y1 && y<=let[j].y2)
g[i][j]=1;
}
for(i=1;i<=n;i++){
memset(b,0,sizeof(b));
if(find(i))ans++;
}
for(i=1;i<=n;i++)
q[r++]=make_pair(i,links[i]);
for(;l<r;l++){
int x=q[l].first,y=q[l].second;
memset(links,0,sizeof(links));
g[y][x]=0;now=0;
for(j=1;j<=n;j++){
memset(b,0,sizeof(b));
if(find(j)) now++;
}
if(now==ans)
q[l].first=q[l].second=0;
g[y][x]=1;
}
j=0;
for(i=1;i<r;i++)if(q[i].first>0)
++j;
if(j==0){
printf("none\n\n");
continue;
}
l=1;
for(i=1;l<j;i++)if(q[i].first>0){
printf("(%c,%d) ",q[i].first+'A'-1,q[i].second);
l++;
}
while(q[i].first==0) i++;
printf("(%c,%d)\n\n",q[i].first+'A'-1,q[i].second);
}
return 0;
}
输出写的太怂了这次…有个家伙很吵的在后面一直说话所以有点凌乱哈~输出错卡了我三个小时,实在是弱爆了呢~不过也因此把匈牙利看了个清清楚楚面目可憎…(误)
唔,实在调不出来了这题就不调了,明天早上要上课,睡觉去吧……
最近毫无状态啊,一直没找到原因,今天说出口,才知道潜意识里早就觉得没希望了吧…出去什么的,是白日梦吧…我一直是真么软弱的,从意志到力量…今天终于说出要放弃的话,心里竟然有一丝的释然和解脱,一点都不像我了呢~
或许在失去那些花儿的时候,我就已经改变了吧,又或许是在那之前,所以才失去的那些花儿呢?默认结局然后宽慰自己,欺骗自己,我是从什么时候开始玩这种很没意思的游戏呢~什么时候,到底是什么时候…那种感觉就像是一种病,我变得麻木和迟疑,看似坚强其实无可依托,表面平静其实不安惶惑。不如意之事虽也多,身体却被浮华的光晕纠缠包裹,静静的城市,静静的灯火,静静的槐影婆娑,静静的蚁群奔涌,静静的坠落,静静的等待钝痛,深深的困倦和无力,对危机的感知趋于虚无。“已经这样了,还有什么能更差吗?”这种想法在每一个警觉的瞬间麻痹我,啃噬我,彻骨的冰冷和绝望侵入身体,为何三业之火不起,焚尽这个世界和我?
人和人之间巨大的差距,真的只是平时的一点点。有时候我会这么想。
One more time.
One more chance.