当前位置:网站首页>FZU 1686 龙之谜 重复覆盖
FZU 1686 龙之谜 重复覆盖
2022-07-06 12:56:00 【全栈程序员站长】
大家好,又见面了,我是全栈君。
兑换0,1模型,如。注意,数据的范围
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
using namespace std;
const int MaxM = 500;
const int MaxN = 500;
const int maxnode = MaxM*MaxN;
int K,n,m;
struct DLX
{
int n,m,size;
int U[maxnode],D[maxnode],R[maxnode],L[maxnode],Row[maxnode],Col[maxnode];
int H[MaxN],S[MaxM];
int ands,ans[MaxN];
void init(int _n,int _m)
{
ands=0x3f3f3f3f;
n = _n;
m = _m;
for(int i = 0;i <= m;i++)
{
S[i] = 0;
U[i] = D[i] = i;
L[i] = i-1;
R[i] = i+1;
}
R[m] = 0; L[0] = m;
size = m;
for(int i = 1;i <= n;i++)
H[i] = -1;
}
void Link(int r,int c)
{
++S[Col[++size]=c];
Row[size] = r;
D[size] = D[c];
U[D[c]] = size;
U[size] = c;
D[c] = size;
if(H[r] < 0)H[r] = L[size] = R[size] = size;
else
{
R[size] = R[H[r]];
L[R[H[r]]] = size;
L[size] = H[r];
R[H[r]] = size;
}
}
void remove(int c)
{
for(int i = D[c];i != c;i = D[i])
L[R[i]] = L[i], R[L[i]] = R[i];
}
void resume(int c)
{
for(int i = U[c];i != c;i = U[i])
L[R[i]]=R[L[i]]=i;
}
bool v[maxnode];
int f()
{
int ret = 0;
for(int c = R[0];c != 0;c = R[c])v[c] = true;
for(int c = R[0];c != 0;c = R[c])
if(v[c])
{
ret++;
v[c] = false;
for(int i = D[c];i != c;i = D[i])
for(int j = R[i];j != i;j = R[j])
v[Col[j]] = false;
}
return ret;
}
void Dance(int d)
{
if(d+f()>=ands) return;
if(R[0] == 0) {ands=min(ands,d);return;}
int c = R[0];
for(int i = R[0];i != 0;i = R[i])
if(S[i] < S[c])
c = i;
for(int i = D[c];i != c;i = D[i])
{
remove(i);
for(int j = R[i];j != i;j = R[j])remove(j);
Dance(d+1);
for(int j = L[i];j != i;j = L[j])resume(j);
resume(i);
}
}
}g;
int mp[20][20],sa,sb,id[20][20];
int main()
{
while(~scanf("%d%d",&n,&m))
{
int tot=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d",&mp[i][j]);
if(mp[i][j]) id[i][j]=++tot;
}
}
scanf("%d%d",&sa,&sb);
g.init(n*m,tot);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
for(int ii=i,cnt=1;cnt<=sa&&ii<n;ii++,cnt++)
{
for(int jj=j,cnt2=1;cnt2<=sb&&jj<m;jj++,cnt2++)
{
if(mp[ii][jj])
{
g.Link(i*m+j+1,id[ii][jj]);
}
}
}
}
}
g.Dance(0);
printf("%d\n",g.ands);
}
return 0;
}版权声明:本文博主原创文章,博客,未经同意不得转载。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117105.html原文链接:https://javaforall.cn
边栏推荐
- 如何实现常见框架
- Regular expression collection
- 2022 fields Award Announced! The first Korean Xu Long'er was on the list, and four post-80s women won the prize. Ukrainian female mathematicians became the only two women to win the prize in history
- 基于STM32单片机设计的红外测温仪(带人脸检测)
- El table table - get the row and column you click & the sort of El table and sort change, El table column and sort method & clear sort clearsort
- 代理和反向代理
- Laravel笔记-自定义登录中新增登录5次失败锁账户功能(提高系统安全性)
- What are RDB and AOF
- 拼多多败诉,砍价始终差0.9%一案宣判;微信内测同一手机号可注册两个账号功能;2022年度菲尔兹奖公布|极客头条
- OSPF多区域配置
猜你喜欢

HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅

OneNote in-depth evaluation: using resources, plug-ins, templates

for循环中break与continue的区别——break-完全结束循环 & continue-终止本次循环

【mysql】游标的基本使用

Redis insert data garbled solution

OneNote 深度评测:使用资源、插件、模版

Laravel笔记-自定义登录中新增登录5次失败锁账户功能(提高系统安全性)

OAI 5g nr+usrp b210 installation and construction

【mysql】触发器

Seven original sins of embedded development
随机推荐
Reference frame generation based on deep learning
Is this the feeling of being spoiled by bytes?
New database, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, Feishu multidimensional table, heipayun, Zhixin information, YuQue
Reflection operation exercise
The difference between break and continue in the for loop -- break completely end the loop & continue terminate this loop
Ravendb starts -- document metadata
【论文解读】用于白内障分级/分类的机器学习技术
HMS core machine learning service creates a new "sound" state of simultaneous interpreting translation, and AI makes international exchanges smoother
js通过数组内容来获取数组下标
如何实现常见框架
Laravel笔记-自定义登录中新增登录5次失败锁账户功能(提高系统安全性)
SAP UI5 框架的 manifest.json
Reinforcement learning - learning notes 5 | alphago
Nodejs教程之Expressjs一篇文章快速入门
Dynamically switch data sources
愛可可AI前沿推介(7.6)
Pycharm remote execution
OAI 5g nr+usrp b210 installation and construction
Is it profitable to host an Olympic Games?
039. (2.8) thoughts in the ward