FZU - 1686 神龙的难题 重复覆盖

NLP自然语言处理:神经网络语言模型(NNLM) 目录 一、传统语言模型 1.1 稀疏性 1.2泛化能力差 二、神经网络语言模型 2.1 前馈神经网络模型(FFLM) 2.2 循环神经网络模型(RNNLM) 2.2.1循环神经网络模型示例 2.2.2RNN语言模型训练过程 2.2.3RNN语言模型反向传播 2.2.4语言模型评估 语言模型的构建目的是为了对语言中的各要素的分布进行估计,具有较长的研究历史和广泛... 阅读详情

题目:这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就要有一些人出来守护居民们不被魔物侵害.魔法使艾米莉就是这样的一个人.她骑着她的坐骑,神龙米格拉一起消灭干扰人类生存的魔物,维护王国的安定.艾米莉希望能够在损伤最小的前提下完成任务.每次战斗前,她都用时间停止魔法停住时间,然后米格拉他就可以发出火球烧死敌人.米格拉想知道,他如何以最快的速度消灭敌人,减轻艾米莉的负担.

input:数据有多组,你要处理到EOF为止.每组数据第一行有两个数,n,m,(1<=n,m<=15)表示这次任务的地区范围. 然后接下来有n行,每行m个整数,如为1表示该点有怪物,为0表示该点无怪物.然后接下一行有两个整数,n1,m1 (n1<=n,m1<=m)分别表示米格拉一次能攻击的行,列数(行列不能互换),假设米格拉一单位时间能发出一个火球,所有怪物都可一击必杀.

output:输出一行,一个整数,表示米格拉消灭所有魔物的最短时间.


代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<numeric>
using namespace std;
#define PI acos(-1.0)
#define LL long long
#define ULL unsigned long long
#define INF 0x3f3f3f3f
#define mm(a,b) memset(a,b,sizeof(a))
#define PP puts("*********************");
template<class T> T f_abs(T a){ return a > 0 ? a : -a; }
template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
// 0x3f3f3f3f3f3f3f3f
// 0x3f3f3f3f

int limit;//重复覆盖时使用,行数选择的最大数目
struct DLX {
	const static int ROW = 1003, COL = 1003, SIZE = ROW * COL;
	int L[SIZE], R[SIZE], U[SIZE], D[SIZE];  //模拟指针
	int col[SIZE], row[SIZE]; //所在列 所在行
	int visn, visited[COL]; //用于估价函数
	int sel[ROW], seln; //选择的行
	int sz[COL]; //列元素数
	int total/*节点编号*/, H[ROW];
	void init(int clen) { //初始化列头指针
		for(int i = 0; i <= clen; ++i) {
			L[i] = i - 1; R[i] = i + 1;
			U[i] = D[i] = i; sz[i] = 0;
		}
		for(int i=0;i<ROW;i++) H[i]=-1;
		for(int i=0;i<COL;i++) visited[i]=0; visn = 0; //用于重复覆盖的A*剪枝
		L[0] = clen; R[clen] = 0; total = clen + 1;
	}
	void link(int r, int c) {//行列都是从下标1开始
		U[total] = c; D[total] = D[c];
		U[D[c]] = total; D[c] = total;
		if(H[r] < 0) H[r] = L[total] = R[total] = total;
		else {
			L[total] = H[r]; R[total] = R[H[r]];
			L[R[H[r]]] = total; R[H[r]] = total;
		}
		sz[c]++; col[total] = c; row[total++] = r;
	}
//-------------------- 精确覆盖 -------------------------
	void remove(const int &c) { //删除c列上所有1元素所在的行
		L[R[c]] = L[c]; R[L[c]] = R[c];
		for(int i = D[c]; i != c; i = D[i])
			for(int j = R[i]; j != i; j = R[j])
				U[D[j]] = U[j], D[U[j]] = D[j], --sz[col[j]];
	}
	void resume(const int &c) { //恢复c列上所有1元素所在的行
		R[L[c]] = L[R[c]] = c;
		for(int i = U[c]; i != c; i = U[i])
			for(int j = L[i]; j != i; j = L[j])
				++sz[col[U[D[j]] = D[U[j]] = j]];
	}
	bool dance(int now) {
		if(R[0] == 0) {
			seln = now;
			return true;
		}
		int c=R[0], i, j;
		for(i = R[0]; i != 0; i = R[i]) //选择元素最少的列c
			if(sz[c] > sz[i]) c = i;
		remove(c);
		for(i = D[c]; i != c; i = D[i]) { //删除与c相连的行i
			for(j = R[i]; j != i; j = R[j]) //删除行元素所在的列j
				remove(col[j]);
			sel[now] = row[i]; //选择此行 保存行号
			if(dance(now + 1)) { //对于不同的题 这个地方常常需要改动
				return true;
			}
			for(j = L[i]; j != i; j = L[j])
				resume(col[j]);
		}
		resume(c);
		return false;
	}
//-------------------- 重复覆盖 -------------------------
	void _remove(const int &c) {
		for(int i = D[c]; i != c; i = D[i])
			L[R[i]] = L[i], R[L[i]] = R[i];
	}
	void _resume(const int &c) {
		for(int i = U[c]; i != c; i = U[i])
			L[R[i]] = R[L[i]] = i;
	}
	int Astar(){ //估价函数
		int res = 0; ++visn;
		for(int i = R[0]; i != 0; i = R[i]) {
			if(visited[i] != visn) {
				++res; visited[i] = visn;
				for(int j = D[i]; j != i; j = D[j])
					for(int k = R[j]; k != j; k = R[k])
						visited[col[k]] = visn;
			}
		} return res;
	}
	void _dance(int now) {
	    if(now + Astar() >= limit){
            return;
	    }
		if(R[0] == 0){
            limit=min(limit,now);
            return;
		}
		int c=R[0], i, j;
		for(i = R[0]; i != 0; i = R[i]) //选择元素最少的列c
			if(sz[c] > sz[i]) c = i;
		for(i = D[c]; i != c; i = D[i]) {
			_remove(i);
			for(j = R[i]; j != i; j = R[j])
				_remove(j);
			_dance(now + 1);
			for(j = L[i]; j != i; j = L[j])
				_resume(j);
			_resume(i);
		}
	}
}dl;
int arr[20][20];
int main(){

    int n,m,n1,m1;
    while(~scanf("%d%d",&n,&m)){
        int r=1,c=0;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++){
                scanf("%d",&arr[i][j]);
                if(arr[i][j])
                    arr[i][j]=++c;
            }
        dl.init(c);
        scanf("%d%d",&n1,&m1);
        for(int i=1;i+n1-1<=n;i++)
            for(int j=1;j+m1-1<=m;j++){
                int flag=0;
                for(int k=i;k<=i+n1-1;k++)
                    for(int t=j;t<=j+m1-1;t++){
                        if(arr[k][t]>0){
                            dl.link(r,arr[k][t]);
                            flag=1;
                        }
                    }
                if(flag) r++;
            }
        limit=INF;
        dl._dance(0);
        printf("%d\n",limit);
    }
    return 0;
}


基于gm/id方法的折叠式共源共栅放大器设计实践 本文详细介绍了基于gm/id设计方法进行折叠式共源共栅放大器设计的完整流程。该方法通过确定晶体管的跨导效率(gm/id)作为核心设计参数,将复杂的放大器设计转化为有明确路径的优化问题。文章以设计一个增益80dB、带宽1GHz的两级放大器为例,逐步拆解了从指标分解、关键晶体管工作点选取、到实战仿真与微调的全过程,特别强调了第二级设计对稳定性的影响以及相位裕度的调试技巧。 阅读详情

相关推荐

OpenVPN 新增 windows 客户端

虚拟私人网络(Virtual Private Network,简称VPN)是一种网络技术,它允许用户通过公共网络(如互联网)建立一个安全的连接通道。本文介绍如何添加 windows 客户端。

利昂的技术存档 3762

神龙的难题(FZU - 1686)

这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就要有一些人出来守护居民们不被魔物侵害.魔法使艾米莉就是这样的一个人.她骑着她的坐骑,神龙米格拉一起消灭干扰人类生存的魔物,维护王国的安定.艾米莉希望能够在损伤最小的前提下完成任务.每次战斗前,她都用时间停止魔法停住时间,然后...

Spidy_harker的博客 447

用树莓派Pico低成本更新USB-C PD控制器固件实战指南

固件更新是嵌入式系统开发与维护中的核心环节,它直接决定了硬件设备的功能、性能与兼容性。其原理通常是通过特定的通信接口(如SWD、JTAG、UART或USB)与设备内部的Bootloader建立连接,将新的程序代码安全写入非易失性存储器。在USB Power Delivery(PD)和Type-C生态中,固件更新技术尤为重要,它能修复协议握手Bug、适配新设备并提升供电策略的灵活性。本文聚焦于一个典型的工程实践场景:如何利用广泛普及且成本极低的树莓派Pico开发板,作为USB-C协议到I²C协议的转换桥,实现

weixin_27869497的博客 452

C - 神龙的难题 FZU - 1686

传送门 思路 题意 在一个nm的0、1矩阵中,1表示怪物,神龙的每次攻击可以消灭一个 n1m1的矩形的内的怪物,问消灭地图中的所有怪物最少需要多少次攻击? 思路 DLX重复覆盖 解决问题 构造数据矩阵 给怪物编上编号作为列号,从1开始,把怪物当做列 把神龙的攻击区域当做行,神龙的攻击区域有很多选择,但是由于数据范围小,我们直接暴力枚举 所有攻击区域,在枚举的时候也给这些当做行的区域编上编号作为行号,对于某个攻击区域(对应的行的编号为i),如果这个区域内有怪物(怪物编号为j),那么对应的数

做一只熊猫不好吗? 223

LAN8720芯片硬件设计避坑指南:从晶振选择到PHY地址配置的5个关键细节

本文深入解析LAN8720以太网PHY芯片硬件设计的五个关键细节,涵盖晶振模式选择、PHY地址配置、复位电路设计、电源滤波与接口布线。重点阐述了REF_CLK Out与REF_CLK In两种时钟模式的配置逻辑与应用场景,提供了避免通信失败与信号完整性问题的实战方案,是嵌入式网络硬件开发的实用避坑指南。

i1j2k的博客 512

Petalinux 2021.1 + Vivado 2021 实战:手把手教你为Zynq板卡移植Linux并搞定AXI DMA驱动

本文详细介绍了基于Petalinux 2021.1和Vivado 2021工具链,为Zynq开发板移植Linux系统并开发AXI DMA驱动的全流程。从环境配置、硬件设计到驱动适配与性能优化,提供了实战避坑技巧和版本特异性问题的解决方案,帮助开发者快速构建高速数据传输系统。

weixin_42641741的博客 386

fzu 1686(DLX 重复点覆盖)

可以重复的点覆盖, 写法和一般的DLX 很相似,但是在找到选择一行的时候,只删去这一行上所有点的列。   还要注意的是启发函数起了很大的剪枝作用。   Problem 1686 神龙的难题 Accept: 331    Submit: 1111 Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Descrip...

weixin_34216036的博客 230

宝马项目化流程标准(BMW ABC flyer requirement)

宝马项目化流程标准(BMW ABC flyer requirement)

于大博 7244

[ACM] FZU 1686 神龙的难题 (DLX 重复覆盖)

Problem 1686 神龙的难题 Accept: 444    Submit: 1365 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description 这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进

逆风的方向 更适合飞翔 2343

WPF实战:利用Live Charts实现高性能动态曲线可视化

本文详细介绍了如何在WPF中使用Live Charts实现高性能动态曲线可视化,特别适用于工业监控和金融分析等实时数据场景。通过增量渲染、内存复用和硬件加速等核心技术,Live Charts能够高效处理高频数据更新,显著提升图表流畅度。文章提供了从基础实现到工业级优化的完整解决方案,帮助开发者应对各种性能挑战。

weixin_29189373的博客 406

NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.解决方案

本文主要介绍了NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.解决方案,希望能对使用jupyter notebook的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

FZU - 1686 神龙的难题 (舞蹈链,可重覆盖)

这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就要有一些人出来守护居民们不被魔物侵害.魔法使艾米莉就是这样的一个人.她骑着她的坐骑,神龙米格拉一起消灭干扰人类生存的魔物,维护王国的安定.艾米莉希望能够在损伤最小的前提下完成任务.每次战斗前,她都用时间停止魔法停住时间,然后...

sgh666666的博客 220

【推荐100个unity插件】帮助你快速开发一款FPS游戏—— FPS Framework

FPS Framework 快速入门指南 FPS Framework 是一个 Unity 开发框架,可加速 FPS 游戏开发。主要功能包括: 第一人称控制器:基于 Character Controller 实现,提供移动、跳跃、下蹲等功能,支持自定义参数调整 渲染管线转换:内置 RP 转换器,支持 URP/HDRP 等渲染管线一键切换 库存系统: 采用双列表管理:物品列表(Items)和可收集物列表(Collectables) 支持自定义库存物品和可收集物类型 提供拾取/丢弃功能实现 快速开始: 通过预制件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2567

FZU 1686 神龙的难题(DLX重复覆盖)

FZU 1686 神龙的难题 题目链接 题意:中文题 思路:每一个1看成列,每个位置作为左上角的矩阵看成行,dlx重复覆盖即可 代码: #include #include using namespace std; const int MAXNODE = 66666; const int INF = 0x3f3f3f3f; const int MAXM = 23

Remilia's 1688

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

DLX重复覆盖 fzu1686 神龙的难题

传送门:点击打开链接 题意:告诉你一个矩阵大小,再告诉你0和1的分布,现在可以用n1*m1大小的矩形去覆盖所有的1,问至少要多少个矩形 思路:裸DLX重复覆盖,行为所有可能的矩形,列为每个点 #include #include #include #include #include #include #include #include #include #include #include #i

qwb的博客 1060

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

FZU 1686 神龙的难题 DLX重复覆盖

DLX重复覆盖: 需要一个A*函数剪支 Problem 1686 神龙的难题 Accept: 462    Submit: 1401 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description 这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来

码代码的猿猿 1230

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

FZU1686 神龙的难题 —— Dancing Links 可重复覆盖

题目链接:https://vjudge.net/problem/FZU-1686 Problem 1686 神龙的难题 Accept: 812    Submit: 2394 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description 这是个剑与魔法的世界.英雄和魔物同在,

A man can be destroyed, but not defeated. 473

FZU_1686_神龙的难题(DancingLinksX重复覆盖)

Problem 1686 神龙的难题 Accept: 661    Submit: 1983 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description 这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物

OTTFF的博客 2217

FZU 1686 神龙的难题 (DLX求重复覆盖)

题目大意: 就是现在给出一个n*m的01矩阵 每次可以选择将一个n1*m1的矩形中的所有1变成0 问将所有的1变成0需要使用n1*m1的矩形至少多少次 大致思路: 对于每一个位置作为列, 一共15*15列, 对于每一个可能选择的矩形都建立一行, 然后用Dancing Link做重复覆盖即可 代码如下: Result  :  Accepted     Memory  :

Gatevin的专栏 1225

【FZU】1686 神龙的难题 重复覆盖

传送门:【FZU】1686 神龙的难题 题目分析:又是一道水题

poursoul 1114

FZU 1686 神龙的难题 (DLX重复覆盖)

Problem Description 这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就要有一些人出来守护居民们不被魔物侵害.魔法使艾米莉就是这样的一个人.她骑着她的坐骑,神龙米格拉一起消灭干扰人类生存的魔物,维护王国的安定.艾米莉希望能够在...

bandiaodai5734的博客 201

FZU-1686(神龙的难题)(DancingLinks可重复覆盖)

题目:FZU - 1686 这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就要有一些人出来守护居民们不被魔物侵害.魔法使艾米莉就是这样的一个人.她骑着她的坐骑,神龙米格拉一起消灭干扰人类生存的魔物,维护王国的安定.艾米莉希望能够在损伤最小的前提下完成任务.每次战斗前,...

偷吃了老鼠的土豆 295

FZU 1686 神龙的难题(重复覆盖|Dancing Links)

题意:这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就要有一些人出来守护居民们不被魔物侵害.魔法使艾米莉就是这样的一个人.她骑着她的坐骑,神龙米格拉一起消灭干扰人类生存的魔物,维护王国的安定.艾米莉希望能够在损伤最小的前提下完成任务.每次战斗前,她都用时间停止魔法停住时间

GODSPEED 560

FZU 1686 神龙的难题 重复覆盖

转换成0,1模型就好了,注意数据范围 #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int MaxM = 500; con

1050

FZU 1686 神龙的难题 重复覆盖问题

题目:http://acm.fzu.edu.cn/problem.php?pid=1686题意:Problem Description 这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就要有一些人出来守护居民们不被魔物侵害.魔法使艾米莉就是这样的一个人.她骑着她的坐骑,神龙

弱智就要多努力 397

fzu1686神龙的难题(Dancing Links(重复覆盖))

题目链接:点这里!!! 题意:中文题。 题解:做的第一道DLX重复覆盖,我们把1当成一列,每个枚举的矩阵当成行,然后跑DLX重复覆盖就可以了!!!! (不过不是很懂他的剪枝函数) 代码: #includecstdio> #include #include #include #include #include #include #include #include #

Zsss的博客 528
上一篇: HDU - 2295 重复覆盖+二分
下一篇: hdu1166 敌兵布阵
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值