【题目链接】

https://www.luogu.org/problemnew/show/P1074

【算法】

搜索 + 剪枝

【代码】

#include<bits/stdc++.h>
using namespace std;
const int INF = 2e9; struct point
{
int x,y;
} a[]; int i,j,ans,n,Mask,t;
int val[][];
int w[],num[];
bool used[];
int row[],col[],grid[];
bool solved; const int s[][] =
{
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,}
}; inline int lowbit(int x)
{
return x & (-x);
}
inline void chkmax()
{
int i,ret = ;
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
ret += val[i][j] * s[i][j];
}
}
ans = max(ans,ret);
}
inline void dfs(int dep)
{
int i,mn,pos,v,t;
if (dep > n)
{
solved = true;
chkmax();
return;
} else
{
v = ; mn = INF;
for (i = ; i <= n; i++)
{
if (!used[i])
{
t = row[a[i].x] & col[a[i].y] & grid[a[i].x/*+a[i].y/];
if (!t) continue;
if (w[t] < mn)
{
mn = w[t];
pos = i;
v = t;
}
}
}
while (v)
{
used[pos] = true;
val[a[pos].x][a[pos].y] = num[lowbit(v)] + ;
row[a[pos].x] ^= lowbit(v);
col[a[pos].y] ^= lowbit(v);
grid[a[pos].x/*+a[pos].y/] ^= lowbit(v);
dfs(dep+);
used[pos] = false;
row[a[pos].x] ^= lowbit(v);
col[a[pos].y] ^= lowbit(v);
grid[a[pos].x/*+a[pos].y/] ^= lowbit(v);
val[a[pos].x][a[pos].y] = ;
v -= lowbit(v);
}
}
} int main()
{ Mask = ( << ) - ;
for (i = ; i <= Mask; i++)
{
w[i] = ;
t = i;
while (t)
{
w[i]++;
t -= lowbit(t);
}
}
for (i = ; i < ; i++) num[ << i] = i;
for (i = ; i < ; i++) row[i] = col[i] = grid[i] = Mask;
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
scanf("%d",&val[i][j]);
if (!val[i][j])
{
n++;
a[n] = (point){i,j};
} else
{
row[i] ^= ( << (val[i][j] - ));
col[j] ^= ( << (val[i][j] - ));
grid[i/*+j/] ^= ( << (val[i][j] - ));
}
}
}
solved = false;
dfs();
if (solved) printf("%d\n",ans);
else printf("-1\n"); return ; }

【NOIP 2009】 靶形数独的更多相关文章

  1. NOIP 2009 靶形数独(DLX)

    小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教,Z 博士拿出了他最近发明的“靶形数独”,作 ...

  2. [NOIp 2009]靶形数独

    Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他 ...

  3. [COGS 0407][NOIP 2009] 靶形数独

    407. [NOIP2009] 靶形数独 ★★   输入文件:sudoku.in   输出文件:sudoku.out   简单对比时间限制:5 s   内存限制:128 MB [问题描述] 小城和小华 ...

  4. 靶形数独 2009年NOIP全国联赛提高组(搜索)

    靶形数独 2009年NOIP全国联赛提高组  时间限制: 4 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 小城和小华都是热爱数 ...

  5. 【NOIP 2009】靶形数独

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...

  6. NOIp 2009:靶形数独

    题目描述 Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教, Z ...

  7. NOIP2009靶形数独[DFS 优化]

    描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z博士请教,Z 博士拿出了他最近发明的“靶形数独 ...

  8. 靶形数独(codevs 1174)

    1174 靶形数独 2009年NOIP全国联赛提高组  时间限制: 4 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Descri ...

  9. 洛谷 P1074 靶形数独 Label:search 不会

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...

  10. [NOIP2009] 靶形数独(搜索+剪枝)

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...

随机推荐

  1. Flex使用总结

    最近做的项目因为对浏览器的兼容要求是IE10以上,所以大胆的使用了Flex布局,这里总结一些使用心得仅供参考. 一,Flex简单介绍 Flex是Flexible Box的缩写,意为”弹性布局”.任何一 ...

  2. Yearning + Inception SQL审核平台搭建

    Yearning 安装: 安装Nginxyum install nginx -y 按照顺序安装MySQLmysql-community-common-5.7.22-1.el6.x86_64.rpmmy ...

  3. 3、scala函数入门

    1.定义函数 2.在代码块中定义函数体 3.递归函数与返回类型 4.默认参数 5.带名参数 6.变长参数 7.使用序列调用变长参数  8.过程 9.lazy值              10.异常 1 ...

  4. CVPR2015深度学习回顾

    原文链接:http://www.csdn.net/article/2015-08-06/2825395 本文做了少量修改,仅作转载存贮,如有疑问或版权问题,请访问原作者或告知本人. CVPR可谓计算机 ...

  5. 【sqli-labs】 less28a GET- Blind based -All you Union&Select Belong to us -String -Single quote-parenthesis(GET型基于盲注的去除了Union和Select的单引号带括号字符型注入)

    和less28没什么区别,直接上个payload吧 http://192.168.136.128/sqli-labs-master/Less-28a/?id=0')%a0uNion%a0sElect% ...

  6. Arduino DS18B20温度检测

    一.实物图 注:电阻选取4.7k欧 二.事例代码 注:先下载Onewire库到arduino libraries目录下,然后就有例子 #include <OneWire.h> // One ...

  7. java将父类所有的属性COPY到子类中

    public class FatherToChildUtils { /* * 将父类所有的属性COPY到子类中. * 类定义中child一定要extends father: * 而且child和fat ...

  8. MATLAB图形界面设计(下)

    文章参考Blue Mountain https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4307777.html 一.菜单设计 1.建立菜单项 (1)建 ...

  9. [基准测试]----lmbench

    引言 要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具,一般来说为了确保测试结果的公平和权威性,会选用比较成熟的商业测试软件.但在特定情形下,只是想要简单比较不同系统或比较一 ...

  10. CentOS7.2安装nginx失败

    错误提示: Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyu ...