Solution of 洛谷-P1896

news/发布时间2024/8/25 1:21:24

并不会有更好的阅读体验

\(\text{Sol}\)

我们先看一眼数据范围:

\(1 \le N \le 9\)

没关系,DFS 会出手

好吧,正经的说,如果暴搜的话复杂度会涨到 \(\text O(2^{n^2})\)\(\text T\) 到飞起。

此时我们发现有个东西叫状压 \(\text{DP}\) ,也是解决小范围数据的问题。

老套路,枚举每一行,对每一行的每一格是否放置国王进行状态压缩。

然后我们直接枚举每一行的状态与上一行的满足条件的状态进行转移就行了。

此时,其时间复杂度为 \(O(n\cdot (2^{2n}))\),足以通过此题。

\(\text{Code}\)

#include <bits/stdc++.h>
using namespace std;int n, k;
long long f[15][1005][100];
int c[1005];int calc(int i) {int res = 0;for (int j = 0; j < n; j++)res += !!(i & (1 << j));return res;
}bool check2(int i) {for (int j = 0; j < n - 1; j++) {int a = !!(i & (1 << j));int b = !!(i & (1 << (j + 1)));if (a and b) return false;}return true;
}bool check(int i, int j) {int x[15], y[15];for (int k = 0; k < n; k++) {x[k] = !!(i & (1 << k));y[k] = !!(j & (1 << k));}if (x[0] and (y[0] or y[1])) return false;if (x[n - 1] and (y[n - 1] or y[n - 2])) return false;for (int k = 1; k < n - 1; k++) {if (x[k] and (y[k - 1] or y[k] or y[k + 1]))return false;}return true;
}int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n >> k;for (int i = 0; i < (1 << n); i++)f[1][i][calc(i)] = 1;for (int i = 0; i < (1 << n); i++)c[i] = calc(i);for (int i = 2; i <= n; i++) {for (int j = 0; j < (1 << n); j++) {if (!check2(j)) continue;for (int x = c[j]; x <= k; x++) {for (int y = 0; y < (1 << n); y++) {if (!check2(y)) continue;if (!check(j, y), !check(y, j)) continue;f[i][j][x] += f[i - 1][y][x - c[j]];}}}}// for (int i = 1; i <= n; i++) {//     for (int j = 0; j < (1 << n); j++) {//         for (int x = 0; x <= k; x++) {//             cerr << f[i][j][x] << " ";//         }//         cerr << endl;//     }//     cerr << endl;// }long long res = 0;for (int i = 0; i < (1 << n); i++)res += f[n][i][k];cout << res << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.liansuoyi.cn/news/72477755.html

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

手把手教你实现跳表!

一个适用于算法竞赛的跳表实现,附有详细解释发布于我的博客,也许同步更新于博客园 引入 跳表(跳跃表)能够维护一个数的集合(作用类似普通平衡树),查找时间复杂度为 \(\log n\),与平衡树一样基于链表结构。由于不需要平衡树那么多旋转什么的,所以效率比较高,一般认为性…

Strimzi Kafka Bridge(桥接)实战之二:生产和发送消息

最常用最实用的接口,尽在本篇一网打尽,轻松通过http收发kafka消息欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览本文是《Strimzi Kafka Bridge(桥接)实战之》系列的第二篇,咱们直奔bridge的重点:常用接口,…

内核模块详细加载/卸载过程

ko文件在数据组织形式上是ELF(Excutable And Linking Format)格式,是一种普通的可重定位目标文件。 这类文件包含了代码和数据,可以被用来链接成可执行文件或共享目标文件,静态链接库也可以归为这一类。 文件开始处是一个ELF头部(ELF Header),用来描述整个文件的组织,这些…

Windows Server 2016 安装部署MySQL

下载MySQL安装包 MySQL下载链接:https://dev.mysql.com/downloads/mysql/ 系统提示“此应用程序需要安装visual studio 2019 x64可再发行版本。请安装Redistributable,然后再次运行此安装程序。” 访问https://visualstudio.microsoft.com/zh-hans/downloads获取安装包(因…

2023数据采集与融合实践作业一

作业①:实验要求:用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。输出信息:排名 学校名称 省市 学校类型 总分1 清华大学 北京 综合 852.52......import urllib.request from …

QT中tableWidget中文乱码解决方案

各种编程方案尝试未果后,用如下方法搞定了: Edit→Select Ecoding: 选GB18030

itext7.pdfhtml For C#

最近发现 itext7 (前身为iTextSharp) 下有个 https://github.com/itext/i7n-pdfhtml 的项目可以支持html转PDF 下面是官方电子书的翻译内容,原文地址:Chapter 1: Hello HTML to PDF --- 第 1 章:你好 HTML 到 PDF (itextpdf.com) 第 1 章:你好 HTML 到 PDF 在本章中,我们将…

vue3项目table表格动态表头生成+行数据合并

这两处地方是动态的,由后端数据返回思路流程1,后端返回数据二次处理2,根据后端数据生成动态表头3,利用antd 的 customRender 与 rowSpan 设置行合并完整代码<template><Table:data-source="dataSource":columns="columns":pagination="f…

如何在mapbox中将标注添加到面

const testGeoJOSN = () => {// 加载 GeoJSON 数据map.addSource("geojson", {type: "geojson",data: china,generateId: true,});map.addLayer({id: "china",type: "fill",source: "geojson",paint: {"fill-color&…

829. 模拟队列

829. 模拟队列 题目链接:829. 模拟队列 - AcWing题库 队列:就是一个特殊的数组。这个数组,最前面叫队头,最后面叫队尾。只允许在最后面添加元素,只允许在最前面删除元素。#include<bits/stdc++.h>using namespace std; const int N = 1e5 + 10;int qu[N];int main()…

opencv 图像处理方法汇总

Qt的简单使用: https://www.cnblogs.com/carsonzhu/p/10815654.html 一个案例: 图像处理仿真平台 https://blog.csdn.net/qq_37340229/article/details/128685044 该系统主要针对医学 超声图像进行处理,基本涵盖了医学图像处理的经典处理方法,有图像增强、图像滤 波、边缘检…

MySQL的SQL语句优化

一、拿到SQL之后,用执行计划查看参数。explain select 1 from `d_ec_hyx`.`t_advertiser_info` where 1 = 1 and f_corp_id = 15930142 and f_type in (1, 4) and f_refund_status = 1 limit 1 二、 执行计划 ID。1、id 相同,执行顺序从上往下;2、id 不同,如果是子查询,id…

群晖NAS新手必备的6款套件,个个都很实用

群晖NAS提供了强大的DiskStation Manager (DSM),它是一个基于Linux的、网页界面直观的操作系统,含有超级丰富的套件,你可以利用这些套件实现文件共享、文件同步和数据备份等功能,无论是NAS大神还是新手小白,总能在这里找到适合自己的玩法,可以说,从你拥有了NAS起,套件就…

第四周课堂总结

本次Linux课堂上主要是学习了各种处理文件的基本命令,接下来我就总结我在课堂上学习的各种操作命令。 1.创建文件 通过touch命令可以创建一个空白文件,也可以设置文件,属性。 2.查看文件 (1)cat文件 使用cat命令可以查看内容较少的文件。 (2)more命令 more命令以逐页的…

Oracle各个产品官方报价

今天无意中找了Oracle官方网站基于产品的报价,记录一下: 网址:https://shop.oracle.com/apex/f?p=dstore:2:0::NO:RIR,2:PROD_HIER_ID:28457297826249371097327176 Oracle software 软件价格: (按Processor计算)(按user计算) (按Processor计算) ADG软件价格: (按P…

centos7 网卡配置文件解读

借的图 另外,/etc/resolv.conf 是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序 它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数nameserver 8.8.8.8借鉴的: https://blog.csdn.net/lcr_happy/article/deta…

单链表的应用

单链表的应用 实验时间:第3,4周 实验目的:掌握单链表的数据类型定义、头插法建单链表(算法2.11)、尾插法建单链表、输出单链表中的元素、插入单链表元素,删除单链表指定节点的元素 实验要求:认真阅读和掌握教材上和本实验相关的内容和算法。 上机将相关算法实现。 实现上…

递归与汉诺塔问题

递归与汉诺塔问题 总结递归的两个特点:调用自身 结束条件理解以下两个函数的递归输出结果: def func1(x):if x > 0: # 结束条件print(x)func1(x - 1) # 调用自身,x每次调用都会改变func1(3) >>>3 >>>2 >>>1def func2(x):if x > 0:func2(x…
推荐文章