Dancing Link专题】的更多相关文章

DLX用于优化精确覆盖问题,由于普通的DFS暴力搜索会超时,DLX是一个很强有力的优化手段,其实DLX的原理很简单,就是利用十字链表的快速删除和恢复特点,在DFS时删除一些行和列以减小查找规模,使得搜索深度越深而越小,然后回溯继续查找.具体资料可[点击这里]. 精确覆盖问题(补充):具体一点儿就是给你一个0-1矩阵,要你找出一些行,使得每一列都有且只有一个1. HUST 1017 Exact cover 入门必做,测试模板. #include <stdio.h> #include <st…
一些链接: http://www.cnblogs.com/-sunshine/p/3358922.html http://www.cnblogs.com/grenet/p/3145800.html 1.hust 1017 Exact cover (Dancing Links 模板题) 题意:n*m的单位矩阵.现在要选一些行,使得这些行的集合中每列只出现一个1. 思路:裸的精确覆盖问题.刷一遍模板. #include <iostream> #include <stdio.h> #in…
Dancing Link详解: http://www.cnblogs.com/grenet/p/3145800.html Dancing Link求解数独: http://www.cnblogs.com/grenet/p/3163550.html 对于求解9*9的数独,貌似Dancing Linking算法并不怎么理想,还没暴搜来得快,但是16*16的数独优化就明显了. DLX求解问题过程中,难的地方在于建模,一般的优化都不怎么需要考虑,因为DLX已经考虑了优化问题.…
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<iomanip> using namespace std; ,m=; ][];//数独转化过来的01矩阵 ][],cnt[],head,cur,ans; ][]={{,,,,,,,,,}, //九宫格的编号 {,,,,,,,,,}, {,,…
dancing link简直是求解数独的神器,NOIP2009最后一题靶形数独,DFS 各种改变搜索顺序 都没法过,最后还是用了卡时过得.用dancing link写,秒杀所有数据,总时间才400ms不到..(虽然还不是很清楚为什么会快). 一开始还是先看这个blog,图文都非常清晰 http://www.cnblogs.com/grenet/p/3145800.html 上文解释了dancing link的原理,可以用来解决精度覆盖问题,但是求解数独问题还需要一步转化. 见博文: http:/…
2706: [SDOI2012]棋盘覆盖 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 255  Solved: 77[Submit][Status] Description 在一个N*M个方格组成的棋盘内,有K个方格被称为特殊方格.我们要使用一组俄罗斯方块来覆盖这个棋盘,保证特殊方格不能被覆盖,非特殊方格只能被一个俄罗斯方块覆盖,求最多能容纳的俄罗斯方块的数量. 已知有以下三组俄罗斯方块,一个棋盘可能用其中的某一组.   Input 第一行三个…
1017 - Exact cover Time Limit: 15s Memory Limit: 128MB Special Judge Submissions: 5851 Solved: 3092 DESCRIPTION There is an N*M matrix with only 0s and 1s, (1 <= N,M <= 1000). An exact cover is a selection of rows such that every column has a 1 in e…
利用 Dancing Link 来解数独 详细的能够看    lrj 的训练指南 和 < Dancing Links 在搜索中的应用 >这篇论文 Dancing Link 来求解数独 , 是通过求解精确覆盖 精确覆盖就是给出一个 01 矩阵 , 要求我们选择一些行 , 使得每一列有且仅有一个 1 对于数独问题 , 行就是我们的选择 , 即在第 i 行 第 j 列 放上 数字 k , 所以我们最多有 i * j * k 中选择 假设某些位置( x , y  )已经放了数字 a , 那么我们的选择…
1017 - Exact cover Problem's Link:   http://acm.hust.edu.cn/problem/show/1017 Mean: 给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1 analyse: 初学DLX. 这是DLX处理的最简单的问题,也是模板题. Time complexity: O(n*d) Source code:  #include <stdio.h> #include <string.h> #…
http://www.cnblogs.com/grenet/p/3145800.html 链接给的博客写的很好,比较好懂. 可惜不是c语言... 于是决定自己要建一个模板. 一道裸题:hustoj 1017 exact cover 输入一个矩阵求选哪些行,使得这是一个精确覆盖 AC通道:http://acm.hust.edu.cn/problem/show/1017 #include<cstdio> #include<cstring> #include<algorithm&g…
1501: [NOI2005]智慧珠游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 190  Solved: 122[Submit][Status] Description Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符.如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母.如果第i行的第j个字符是”.”,则表示第i行第j列的格子上没有放零件.输入保证预放的零件已…
申明:因为转载的没有给出转载链接,我就把他的链接附上,请尊重原创: http://www.cnblogs.com/-sunshine/p/3358922.html 如果谁知道原创链接 给一下,请尊重原创; 问题描述: 给定一个n*m的矩阵,有些位置为1,有些位置为0.如果G[i][j]==1则说明i行可以覆盖j列. Problem: 1)选定最少的行,使得每列有且仅有一个1. 2)选定最少的行,使得每列至少一个1. DLX原理: 这类属于NP问题的问题,可以使用搜索解决.但是普通的搜索必超时无疑…
算法详细:Dancing Links博客 1.精确覆盖: ZOJ3209 Treasure Map HUST1017 Exact cover POJ3074 Sudoku 2.可重复覆盖: HDU2295 Radar FZU1686 神龙的难题…
以下转自:http://hi.baidu.com/fpkelejggfbfimd/item/99421eaefa93a814a9cfb722 本来以为HNU的huicpc035和我一样退役了,后来听说他组成了新的footman队,于是又关注了下他. 035体现了两个我觉得非常重要的品质:1.刻苦的训练2.有效的训练 (本文将主要讨论个人训练,不讨论团队合作)而这些品质对于我们弱校ACMer选手水平的提高我觉得很重要.(注意:仅限于我们ACM-ICPC的弱校,即最多只能闱空 难 # 灰 桓哦 郏?…
第一题: 题目大意: 设 2n 张牌分别标记为 1, 2, ..., n, n+1, ..., 2n,初始时这 2n 张牌按其标号从小到大排列.经一次洗牌后,原来的排列顺序变成 n+1, 1, n+2, 2, ..., 2n, n.即前 n 张牌被放到偶数位置 2, 4, ..., 2n,而后 n 张牌被放到奇数位置 1, 3, ..., 2n-1.可以证明对于任何一个自然数 n,经过若干次洗牌后可恢复初始状态.现在你的的任务是计算对于给定的 n 的值(n≤10^5 ),最少需要经过多少次洗牌可…
09年的题总体来说 没有难题,但是每道题除了第一题都要认真的慢慢写才能AC, 第一题: R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动. 历经艰险后,潜伏于S国的R国间谍小C终于摸清了S国军用密码的编码规则:1. S国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所的内容均由大写字母‘A’—‘Z’构成(无空格等其他字母).2. S国对于每个字母规定了对应的“密字”.加密的过程就是将原信息中的所有字母替换为其对应的“密字”.3. 每个字母只对应一个唯一的“密字…
励志下! 刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解.很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是必要条件. 我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要. 其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间, 我们训练的目的是什么?我觉得有四点1.提高编程能力2.学习算法,(读书,读论文,包括做一些题目验证)3.…
刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解. 很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是必要条件. 我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要. 其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间, 我们训练的目的是什么?我觉得有四点 1.提高编程能力 2.学习算法,(读书,读论文,包括做一些题目验证) 3.准…
Dancing link twice. Find the maximum combination numbers in the first time. Enumerate each node, dancing. If the new result is not optimaze, then push it into ans. #include <cstdio> #include <vector> #include <bitset> #include <cstdli…
2011-05-17 21:26 1429人阅读 评论(0) 收藏 举报 算法网络blog八卦游戏读书 转载自 简单de数字 最终编辑 fading_code by   zfy0701 本来以为HNU的huicpc035和我一样退役了,后来听说他组成了新的footman队,于是又关注了下他. 035体现了两个我觉得非常重要的品质: 1.刻苦的训练 2.有效的训练 (本文将主要讨论个人训练,不讨论团队合作) 而这些品质对于我们弱校ACMer选手水平的提高我觉得很重要.(注意:仅限于我们ACM-IC…
5.回文串 几种方法: 暴力:枚举每一个字串,判断是否为回文串,复杂度O(n^3),暴力月莫不可取 dp:区间dp思想,O(n^2) 中心扩展:找每一个字符,然后往两边扩展,O(n^2) manacher算法:主要是中心扩展的一个优化,链接,这篇讲的易懂 6.ZigZag Conversion P A H N A P L S I I G Y I R 之前用了数学方法,累死了,直接搞个每行的string存一下就行 11. Container With Most Water Start by eva…
1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以baidu 一个叫NOCOW 的网站.   •http://livearchive.onlinejudge.org/ 上面有全部的赛区真题,绝大部分都可以提交,不适合当题库刷,不过在这里找题非常方便.   • http://poj.org/ 不解释了,中国最知名的oj,题量非常之大,历史也很悠久,推荐…
个人项目 Part1:github https://github.com/Aria-K-Alethia/Sudoku Part2:解题思路描述 关于数独的解法 我选择的是暴力搜索算法. (1)关于 -c 首先,本题要求生成的数独最多为1,000,000个,并且要生成的数独都是9x9规模的,而并不是nxn规模,再加上数独本身的限制可以实现一定程度上的剪枝,因此暴力搜索是可行的. 另一方面,本题需要生成的数独各不相同,暴力搜索可以搜索所有的可行解,很容易实现不重复的要求,所以最终我选择暴力搜索的方法…
这次的题目都是什么鬼? 玄学乱搞+肉眼看CODE+倒着搜索? 好吧是我ZZ了 链接在此 T1 玄学乱搞 由于考场上写的部分分做法忘记讨论n<=2000时的情况,少得了30pts 很容易得到一个基于排序的算法: 记录每个数的值以及编号 按编号将原数组从大到小排序 对于每一个数,用在它之前的编号最大和最小的分别更新ans 对于这个算法的正确性显然.因为之前所有点的值都比它大,所以可以稳定确立下min(h[i],h[j])的值,然后记录编号的方式就OK了 但是这里的数据是1e7,快拍时间复杂度为O(n…
目录: 1 X思想的了解. 链表的递归与回溯. 具体操作. 优化. 一些应用与应用中的再次优化(例题). 练手题 X思想的了解. 首先了解DLX是什么? DLX是一种多元未饱和型指令集结构,DLX 代表中级车.加长轴距版本.内饰改款.尊贵车豪华版车型.---百科百度 不不不,我不讲这些明明就是不懂 DLX是什么,一种解决精准覆盖问题的做法,一般不叫算法,下面讲. 模版题: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近遇到一个难题,他需要破解一个棋局.…
1. 算法总结及推荐题目 1.1 C++ STL • STL容器: set, map, vector, priority_queue, queue, stack, deque, bitset• STL算法: sort, unique, nth_element, reverse, rotate, next_permution, find, for_each, count, lower_bound, max, swap, random_shuffle 1.2 基本算法 • 枚举: poj1753,…
刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解.        很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是必要条件. 我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要. 其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间, 我们训练的目的是什么?我觉得有四点        1.提高编程能力        2.学习算法,(…
OI Training 知识体系结构 初级 1.1 C语言基础 1.1.1 C语言程序结构(A+B Problem) 1.1.2 变量,常量,数据类型,输入与输出 1.1.3 条件语句 1.1.4 循环语句 1.1.5 数组 1.1.6 字符数组.字符串 1.1.7 指针 1.1.8 共同体.结构体 1.1.9 函数 1.1.10 过关练习题 中级 2.1 深度优先搜索 2.1.1 栈与递归函数 2.1.2 深搜树模型与回溯 2.2 宽度优先搜索 2.2.1 链表与队列 2.2.2 宽搜树模型…
1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以baidu 一个叫NOCOW 的网站.   •http://livearchive.onlinejudge.org/ 上面有全部的赛区真题,绝大部分都可以提交,不适合当题库刷,不过在这里找题非常方便.   • http://poj.org/ 不解释了,中国最知名的oj,题量非常之大,历史也很悠久,推荐…
数独 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 数独是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个3*3宫内的数字均含1-9,不重复. 每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的. 有一天hrdv碰到了一道号称是世界上最难的数独的题目,作为一名合格的程序员,哪能随随便便向困难低头,于是他决定编个程序来解决它..   输入 第一…