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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

YBTOJ:幻灯片(二分图匹配)

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 YBTOJ:幻灯片(二分图匹配) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 題目描述
    • 數據范圍
  • 解析
  • 解析

題目描述

有一堆透明的幻燈片堆疊在一起,每個幻燈片上的隨機一個位置會有幻燈片的標號。
因為幻燈片是透明的,所以堆疊在一起的幻燈片使得這些標號分不清各自對應的幻燈片。
現在要求你求出那些能夠確定對應關系的幻燈片以及對應的標號。

數據范圍

n<=26n<=26n<=26

解析

面對這樣的數據范圍,我還是不夠暴力…
關鍵的思路就是暴力枚舉每一條邊,判斷刪掉這條邊之后是否仍是完美匹配

解析

#include<bits/stdc++.h> using namespace std; const int N=65; #define ll long long ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();};while(isdigit(c)){x=x*10+c-'0';c=getchar();};return x*f; } int n,m; struct node{int from,to,nxt; }p[N*N*2]; int fi[N],cnt=-1; void addline(int x,int y){p[++cnt]=(node){x,y,fi[x]};fi[x]=cnt; } int a[N],b[N],c[N],d[N],x[N],y[N]; bool in(int x,int y,int i){//printf("x=%d y=%d i=%d %d %d %d %d\n",x,y,i,a[i],b[i],c[i],d[i]);//printf(" %d %d %d %d\n",x>=a[i],x<=b[i],y>=c[i],y<=d[i]);return x>=a[i]&&x<=b[i]&&y>=c[i]&&y<=d[i]; } int E; int vis[N],mat[N],num,ans[N]; bool dfs(int x,int tim){if(vis[x]==tim) return false;vis[x]=tim;for(int i=fi[x];~i;i=p[i].nxt){if(i==E) continue;int to=p[i].to;if(!mat[to]||dfs(mat[to],tim)){mat[to]=x;return true;}}return false; } int hangary(){int res=0;memset(vis,0,sizeof(vis));memset(mat,0,sizeof(vis));for(int i=1;i<=n;i++){if(dfs(i,i)) res++;}return res; } int main(){int o=0;while(scanf("%d",&n)!=EOF){if(!n) break;memset(fi,-1,sizeof(fi));cnt=-1;num=0;memset(ans,0,sizeof(ans));for(int i=1;i<=n;i++){a[i]=read();b[i]=read();c[i]=read();d[i]=read();}for(int i=1;i<=n;i++){x[i]=read();y[i]=read();for(int j=1;j<=n;j++){if(in(x[i],y[i],j)){addline(j,i+n);}}}for(int i=0;i<=cnt;i++){E=i;if(hangary()!=n){num++;ans[p[i].from]=p[i].to-n;}}printf("Heap %d\n",++o);if(!num) printf("none\n");else{for(int i=1;i<=n;i++){if(ans[i]) printf("(%c,%d) ",'A'+i-1,ans[i]);}printf("\n");}printf("\n");}return 0; } /* */

總結

以上是生活随笔為你收集整理的YBTOJ:幻灯片(二分图匹配)的全部內容,希望文章能夠幫你解決所遇到的問題。

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