2706: [SDOI2012]棋盘覆盖 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 255  Solved: 77[Submit][Status] Description 在一个N*M个方格组成的棋盘内,有K个方格被称为特殊方格.我们要使用一组俄罗斯方块来覆盖这个棋盘,保证特殊方格不能被覆盖,非特殊方格只能被一个俄罗斯方块覆盖,求最多能容纳的俄罗斯方块的数量. 已知有以下三组俄罗斯方块,一个棋盘可能用其中的某一组.   Input 第一行三个…
A类数据: 将棋盘黑白染色,相邻的点之间连边,求出二分图最大匹配即可. B类数据: 答案为$\lfloor\frac{n^2-1}{3}\rfloor$,用FFT加速计算即可,时间复杂度$O(L\log L)$. C类数据: 轮廓线DP,对于轮廓线上每个格子,要么为空,要么被占据,要么被占据且还要向下延伸一格. 设$f[i][j][S][k]$表示考虑到$(i,j)$,轮廓线上$m$个格子状态为$S$,转角处被占据状态为$k$时最多能放几个俄罗斯方块. 时间复杂度$O(nm3^m)$. #inc…
利用 Dancing Link 来解数独 详细的能够看    lrj 的训练指南 和 < Dancing Links 在搜索中的应用 >这篇论文 Dancing Link 来求解数独 , 是通过求解精确覆盖 精确覆盖就是给出一个 01 矩阵 , 要求我们选择一些行 , 使得每一列有且仅有一个 1 对于数独问题 , 行就是我们的选择 , 即在第 i 行 第 j 列 放上 数字 k , 所以我们最多有 i * j * k 中选择 假设某些位置( x , y  )已经放了数字 a , 那么我们的选择…
#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:/…
DLX用于优化精确覆盖问题,由于普通的DFS暴力搜索会超时,DLX是一个很强有力的优化手段,其实DLX的原理很简单,就是利用十字链表的快速删除和恢复特点,在DFS时删除一些行和列以减小查找规模,使得搜索深度越深而越小,然后回溯继续查找.具体资料可[点击这里]. 精确覆盖问题(补充):具体一点儿就是给你一个0-1矩阵,要你找出一些行,使得每一列都有且只有一个1. HUST 1017 Exact cover 入门必做,测试模板. #include <stdio.h> #include <st…
「CH6801」棋盘覆盖 传送门 考虑将棋盘黑白染色,两个都无障碍的相邻的点之间连边,边的容量都为1,然后就求一次最大匹配即可 参考代码: #include <cstring> #include <cstdio> #include <queue> #define rg register #define file(x) freopen(x".in", "r", stdin), freopen(x".out", &…
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已经考虑了优化问题.…
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…
棋盘覆盖 水题,题不难,找公式难 import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); while(n-->0){ int k =input.nextInt(); System.out.println…