精确覆盖#include #include #include #include #include using namespace std;const int maxn=920;const int maxnode=920*550;const int maxr=550;int ans;struct DL...
转载 2014-08-26 09:23:00
34阅读
2评论
首先这道题目不难想到将答案转化为这种形式 2^s[2]*3*s[3]*…max*s[max] 这时候我们要分类讨论,设n的二进制位数为t 当1~n中二进制位数小于t时 我们可以直接用组合的知识,二进制有i个1一共有c(t-1,i) 当1~n中二进制位数等于t时 我们数位统计一下即可,具体的当第i位为1时,(从右往左标) 后面i-1位01情况随意,即s[j+s]=s[j+s]+c(i-1,j) (s
转载 2014-09-05 22:04:00
43阅读
2评论
其实是一道DLX的简单题, 可是我做了两天,虽然这两天做的很间断,但是我懂的了一些东西。并不是你算法对的,感觉跟别人的代码差不多就可以达到和别人一样的效果, 这题算法大家都一样但是写出的程序速度却相差有10倍。 我就是因为写的烂,然后一直TLE,一开始我以为是哪里死循环了,后面一直TLE,看了别人的代码,然后一点一点的修改,最后才能过。。。一定要注意自己代码的风格, 一些细节,能省就省,尤其是这种复杂度不定的搜索题, 更是要注意能省一点是一点!Treasure MapTime Limit:2 Seconds Memory Limit:32768 KBYour boss once had got
转载 2013-04-04 10:21:00
80阅读
2评论
/* 题意为给定一个n*m的大矩形,再给出p个小矩形,给出左上角和右上角的坐标,问能不能从这些小矩形里面拿出一些完全覆盖掉给定的大矩形,要求小矩形覆盖时不能交叉,如果可以,求出最少需要多少个小矩形,否则输出-1. 本题可以转化为DLX完全覆盖问题,构造01矩阵。怎么构造呢?首先我们把给定的p个小矩形,每个看作一行,那么构造出的矩阵有p行,原来n*m的大矩形,可以分为n*m个小格,每个小格看作是...
原创 2021-07-15 15:09:18
114阅读
ZOJ_3209     精确覆盖问题,用Dancing Links直接求解即可。 #include<stdio.h> #include<string.h> #include<algorithm> #define MAXN 510 #define MAXM 910 #define MAXD 460010 #define INF 0x3f3f3f3f int N
转载 2012-08-31 17:55:00
44阅读
2评论
思路: 先预处理出来组合数 按位做 枚举sum[x]是多少注意Mod不是一个质数//By SiriusRen#include using namespace std;#define int long longint n,top,w[66],C[66][66],ans=1,cnt...
转载 2017-01-01 15:42:00
48阅读
DescriptionYour boss once had got many copies of a treasure map. Unfortunately, all the copies are now broken to many rectangular pieces, and what make it worse, he has lost some of the pieces. Lu
原创 2022-11-09 21:53:23
79阅读
/* 题意为给定一个n*m的大矩形,再给出p个小矩形,给出左上角和右上角的坐标,问能不能从这些小矩形里面拿出一些完全覆盖掉给定的大矩形,要求小矩形覆盖时不能交叉,如果可以,求出最少需要多少个小矩形,否则输出-1.本题可以转化为DLX完全覆盖问题
原创 2022-03-10 15:21:45
141阅读
http://acm.zju.edu.cn/onlinejudge/showProblem.do?pro
原创 2022-06-16 06:25:47
34阅读
3209: 矩阵输出Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 43  Solved: 21[Submit][Status][Web Board]Description输入n
原创 2022-08-14 00:24:50
54阅读
用最少的矩阵覆盖n*m的地图。注意矩阵不能互相覆盖。 这里显然是一个精确覆盖,但因为矩阵拼接过程中,有公共的边,这里须要的技巧就是把矩阵的左边和以下截去一个单位。 #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include &l
转载 2015-12-22 08:18:00
29阅读
2评论
题意:给定一个m*n的矩阵,其中一些个字是空地(F),其他是障碍(R)。找出一个全部由F组成的面积最大的矩阵,输出其面积的3倍。分析:简单暴力枚举,O(m3*n3),肯定不行。对于某一块F,设up[i][j]表示其上方的空地个数(就像一条悬线),zl[i][j]表示悬线能往左边走到的边界线的坐标,zr[i][j]表示悬线能往右边走到的边界的坐标,那么面积s=(zr[i][j]-zl[i][j]+1)*up[i][j], zl从左到右枚举可以算出,zr则是从右到左枚举,状态转移是:zl[i][j]=max(zl[i-1][j], lo+1), lo表示第i行中第j列左边的最近障碍物的列编号, z
转载 2013-02-12 11:28:00
27阅读
2评论
一片区域从0 0到 n,m,现有若干个矩形碎片,问最少需要多少个碎片可以不重
原创 2023-07-17 18:10:14
52阅读
Treasure MapTime Limit: 2 Seconds Memory Limit: 32768 KBYour boss once had got many copies of a treasure map. Unfortunately, all the copies are n...
原创 2022-10-18 14:06:11
50阅读
按位计算。
转载 2017-01-31 20:08:00
51阅读
2评论
Treasure MapTime Limit:2 Seconds Memory Limit:32768 KBYour boss once had got many copies of a treasure map. Unfortunately, all the copies are now brok...
关键是建好图把n*m的矩阵看成n*m个单位元,作为n*m列;每一个矩形一行。问题即转化为从这些行中选择最少的一部分使每一列被覆盖且仅覆盖一次
原创 2023-09-15 10:07:20
43阅读
题意:一个 n x m 的矩形(1 <= n, m <= 30),现给出这个矩形中 p 个(1 <= p <= 500)子矩形的左下角与右下角坐标,问最少用多少个子矩形能够恰好组成这个 n x m 的大矩形。 ​——>>这是精确覆盖问题,而DLX正是解决精确覆盖问题的有利武器。。      模型转换:将原矩形变成一行,作为 DLX 中的列,表示要被覆盖一次且仅一
转载 2015-02-04 10:06:00
35阅读
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3209题意:有一个n*m的形中的点,就是精确覆盖
原创 2017-08-21 09:58:20
14阅读
3209: 花神的数论题Time Limit:10 SecMemory Limit:128 MBSubmit:689Solved:334[Submit][Status]Description背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。描述话说花... Read More
转载 2014-08-23 21:37:00
72阅读
2评论
  • 1
  • 2
  • 3