【题目链接】

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. oracle中sum求和问题

    如列表所示:都是选填字段name   age salary weight张三     18      20李四     17王五     21燕小六  15      22 sum(age+salar ...

  2. 在64位WindowsServer2012R2中安装Oracle10g第二版(10.2.0.4.0)-20160106

      1.操作系统版本 用于安装数据库的操作系统镜像文件名为:cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso 安装DataCen ...

  3. postgreSQL中跨库查询在windows下的实现方法

    以下是在postgreSQL 8.1版本中的实践,其他版本类似: 1.将C:\Program Files\PostgreSQL\8.1\share\contrib下的dblink.sql复制到C:\P ...

  4. 【sqli-labs】 less19 POST - Header Injection - Referer field - Error based (基于头部的Referer POST报错注入)

    这个和less18一样,都是基于header的注入 这次的字段是referer Referer: ' AND UpdateXml(1,concat(0x7e,database(),0x7e),1),1 ...

  5. MVC控制器返回值

    public ActionResult Index(string id)//主页 //参数string searchString 访问方式为index?searchString=xxxx .参数str ...

  6. 小程序viewflex布局的对齐不对的问题

    index.wxml: <view class="container"> <view class="nav-container"> &l ...

  7. 使用css设置border从中间向两边的颜色渐进效果

    1.效果图,设置目录的右框线渐进效果 2.代码 .rightCont>div:nth-child(1){ width: 370px; height: 100%; border-right: 2p ...

  8. eas之导入导出

    // 是否仅导出有数据的区域,该方法对所有的导出生效(默认为false)table.getIOManager().setExpandedOnly(true); 输入KDF 如果你已经有了一个完整的KD ...

  9. 【ownCloud】添加信任域

    如果在安装ownCloud后,更换了访问方式,比如刚开始是http://127.0.0.1/owncloud,变成了http://1.1.1.1/owncloud,那么在访问时可能得到这样的页面: 您 ...

  10. C#学习笔记_05_输入输出

    05_输入输出 输出语句 Console.WriteLine( ); 将括号内内容输出到控制台,并且换行 Console.Write( ); 将括号内内容输出到控制台,不换行 Console.Writ ...