当前位置: 首页 > news >正文

自己做公司网站百度新闻头条新闻

自己做公司网站,百度新闻头条新闻,阿里云做的网站空间,网站设计制作 厂题意与分析 题意是这样的:给你一个\(N\times M\)的图,其中有一些点不能放置\(1\times 2\)大小的矩形,矩形可以横着放可以竖着放,问剩下的格子中,最多能够放多少个矩形。 注意到是\(1\times 2\)的矩形,所以是…

题意与分析

题意是这样的:给你一个\(N\times M\)的图,其中有一些点不能放置\(1\times 2\)大小的矩形,矩形可以横着放可以竖着放,问剩下的格子中,最多能够放多少个矩形。
注意到是\(1\times 2\)的矩形,所以是一个\(i+j\)和为奇数的可以与\(i+j\)为偶数的相连。抽象坐标和分别为奇数、偶数的为二分图的两个点集,可构建的矩形为边,那么剩下要做的就是二分图的最大匹配。
比较有趣的是具体实现。先把可以匹配的点单独拎出来,然后根据这些点建图。具体怎么建的呢?给每个可以匹配的点标记,如果这些点是奇数点,那么它周围的点连一条边。然后完事了。
然后如何打印结果呢?注意到Linker数组是保存了每一个点与其他点匹配的信息的,拿出来打印就是了。

这题重要的是这个奇偶的建图思想。

代码

/* ACM Code written by Sam X or his teammates.* Filename: hdu1507.cpp* Date: 2018-11-16*/#include <bits/stdc++.h>#define INF 0x3f3f3f3f
#define PB emplace_back
#define MP make_pair
#define fi first
#define se second
#define rep(i,a,b) for(repType i=(a); i<=(b); ++i)
#define per(i,a,b) for(repType i=(a); i>=(b); --i)
#define ZERO(x) memset(x, 0, sizeof(x))
#define MS(x,y) memset(x, y, sizeof(x))
#define ALL(x) (x).begin(), (x).end()#define QUICKIO                  \ios::sync_with_stdio(false); \cin.tie(0);                  \cout.tie(0);
#define DEBUG(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)using namespace std;
using pi=pair<int,int>;
using repType=int;
using ll=long long;
using ld=long double;
using ull=unsigned long long;int n,m,uN,vN;
int a[105][105], b[105], g[505][505];
bool used[505];
int linker[505];bool dfs(int u)
{rep(v,0,vN-1)if(g[u][v] && !used[v]){used[v]=true;if(linker[v]==-1 || dfs(linker[v])){linker[v]=u;return true;}}return false;
}int hungary()
{int res=0;MS(linker,-1);rep(u,0,uN-1){ZERO(used);if(dfs(u)) res++;}return res;
}int
main()
{while(cin>>n>>m){if(!n && !m) break;int k; cin>>k;ZERO(a);while(k--){int u,v; cin>>u>>v;a[u-1][v-1]=-1;}int idx=0;rep(i,0,n-1)rep(j,0,m-1){if(a[i][j]!=-1){b[idx]=i*m+j;a[i][j]=idx++;}}uN=vN=idx;ZERO(g);rep(i,0,n-1)rep(j,0,m-1){if(a[i][j]!=-1 && (i+j)%2){int u=a[i][j];if(i>0 && a[i-1][j]!=-1)g[u][a[i-1][j]]=1;if(i<n-1 && a[i+1][j]!=-1)g[u][a[i+1][j]]=1;if(j>0 && a[i][j-1]!=-1)g[u][a[i][j-1]]=1;if(j<m-1 && a[i][j+1]!=-1)g[u][a[i][j+1]]=1;}}int ans=hungary();cout<<ans<<endl;rep(i,0,vN-1){if(linker[i]!=-1){int x1=b[i]/m+1,y1=b[i]%m+1,x2=b[linker[i]]/m+1,y2=b[linker[i]]%m+1;cout<<"("<<x1<<","<<y1<<")--("<<x2<<","<<y2<<")\n";}}cout<<endl;}return 0;
}

转载于:https://www.cnblogs.com/samhx/p/HDU-1507.html

http://www.lbrq.cn/news/2427517.html

相关文章:

  • 内蒙古建设厅网站百度免费打开
  • 郑州做网站好的公司企业网站seo案例
  • 替别人做网站google代理
  • 网站建设特效代码推销产品的万能句子
  • wordpress 5.1不提示自动更新百度seo排名优化教程
  • 圣亚科技网站案例谷歌浏览器安卓版下载
  • 网站栏目页面哪里有竞价推广托管
  • 建设网站过程微营销平台有哪些
  • 做影视网站赚钱seo教程 百度网盘
  • wordpress网站文章排版插件网络销售怎么找客源
  • wordpress md做网站seo优化
  • 石家庄长安区网站建设公司百度怎么做广告
  • 建站平台是给谁用的百度com百度一下你
  • 游戏网站代理北京网站建设公司优势
  • 重庆网站建设找承越如何网上免费打广告
  • 制作钓鱼网站的费用企业推广网站
  • 网站运营策划提案中国第三波疫情将在9月份
  • 有哪些网站可以做赌博游戏国际新闻热点事件
  • 徐州手机网站推广公司哪家好网络优化工程师前景如何
  • 网站建设发展情况营销策划运营培训机构
  • 网站建设费用多少查询网站流量的网址
  • 凤翔做网站网络营销专业好就业吗
  • wordpress+主题稳定天津seo顾问
  • 做游戏ppt下载网站有哪些曼联vs曼联直播
  • 商洛做网站长尾关键词有哪些
  • 做网站南宁小程序开发
  • 如何做网站备案网站内部链接优化方法
  • 网站结构图怎么画上海网络seo优化公司
  • 合肥做网站便宜网页广告怎么投放
  • 做视频网站如何赚钱百度安装免费下载
  • 【MyBatisPlus】一文讲清 MyBatisPlus 基本原理及基本使用方式
  • numpy库的基础知识(二)
  • LeetCode 658.找到K个最接近的元素
  • 开发者的AI认知指南:用大模型重新理解人工智能(上)
  • 【电影剖析】千钧一发
  • 大模型——上下文工程 (Context Engineering) – 现代 AI 系统的架构基础