HDU 4462 DFS
2012 Asia Hangzhou
Regional Contest
给出N*N的矩阵,所有标记为0,当中有K个点标记为1。而且能够在该位置放置一个能够覆盖曼哈顿距离为r的草人。问最少放置几个草人,能够覆盖所有标记为0的点
DFS就可以,注意仅仅须要覆盖标记为0的点
#include "stdio.h"
#include "string.h"
int inf=0x3f3f3f3f; int n,k,ans;
int x[11],y[11],w[11];
int hash[11];
int map[51][51];
int Fabs(int a)
{
if (a<0) return -a;else return a;
} void judge()
{
int i,j,l,ok;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (map[i][j]==0)
{
ok=0;
for (l=1;l<=k;l++)
if (hash[l]==1 && w[l]>=Fabs(i-x[l])+Fabs(j-y[l]))
{
ok=1;
break;
}
if (ok==0) return ;
} i=0;
for (j=1;j<=k;j++)
if (hash[j]==1) i++;
if (i<ans) ans=i;
} void dfs(int now)
{
if (now>k) { judge();return ;} hash[now]=1;
dfs(now+1);
hash[now]=0;
dfs(now+1);
}
int main()
{
int i;
while (scanf("%d",&n)!=EOF)
{
if (n==0) break;
scanf("%d",&k);
memset(map,0,sizeof(map));
for (i=1;i<=k;i++)
{
scanf("%d%d",&x[i],&y[i]);
map[x[i]][y[i]]=1;
} for (i=1;i<=k;i++)
scanf("%d",&w[i]);
ans=inf; memset(hash,0,sizeof(hash));
dfs(1);
if (ans==inf) printf("-1\n");
else printf("%d\n",ans);
}
return 0;
}
HDU 4462 DFS的更多相关文章
- HDU 5143 DFS
分别给出1,2,3,4 a, b, c,d个 问能否组成数个长度不小于3的等差数列. 首先数量存在大于3的可以直接拿掉,那么可以先判是否都是0或大于3的 然后直接DFS就行了,但是还是要注意先判合 ...
- Snacks HDU 5692 dfs序列+线段树
Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...
- HDU 4462 Scaring the Birds (暴力枚举DFS)
题目链接:pid=4462">传送门 题意:一个n*n的区域,有m个位置是能够放稻草人的.其余都是玉米.对于每一个位置(x,y)所放稻草人都有个作用范围ri, 即abs(x-i)+ab ...
- [dfs+水] hdu 4462 Scaring the Birds
题意: N*N的矩阵中有M个点能够放稻草人.且给覆盖距离R 每一个稻草人能覆曼哈顿距离R以内的点 问最少须要多少个稻草人 思路: 由于范围非常小,直接能够暴力 注意稻草人所在的位置是不须要被覆盖的 代 ...
- HDU 4462
http://acm.hdu.edu.cn/showproblem.php?pid=4462 一道题意不清的水题 题意:给一个n*n的格子,在上面放草人,每个草人有恐惧范围,问最少选择几个草人可以覆盖 ...
- HDU 5877 dfs+ 线段树(或+树状树组)
1.HDU 5877 Weak Pair 2.总结:有多种做法,这里写了dfs+线段树(或+树状树组),还可用主席树或平衡树,但还不会这两个 3.思路:利用dfs遍历子节点,同时对于每个子节点au, ...
- hdu 4751(dfs染色)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...
- HDU 1045 (DFS搜索)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1045 题目大意:在不是X的地方放O,所有O在没有隔板情况下不能对视(横行和数列),问最多可以放多少个 ...
- HDU 1241 (DFS搜索+染色)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1241 题目大意:求一张地图里的连通块.注意可以斜着连通. 解题思路: 八个方向dfs一遍,一边df ...
随机推荐
- Bootstrap入门九:辅助类
1.情境文本颜色 通过颜色来展示意图,Bootstrap 提供了一组工具类.这些类可以应用于链接,并且在鼠标经过时颜色可以还可以加深,就像默认的链接一样. <p class="text ...
- js javascript 实现多线程
在讲之前,大家都知道js是基于单线程的,而这个线程就是浏览器的js引擎. 首先来看一下大家用的浏览器都具有那些线程吧. 假如我们要执行一些耗时的操作,比如加载一张很大的图片,我们可能需要一个进度条来让 ...
- qt study2
- DDR3调试记录
FPGA采集视频数据并写到DDR3,然后从DDR3读出并送给显示终端显示.不能稳定显示.但用FPGA内部逻辑产生color bar写到DDR3后读出来显示正常.因此DDR3部分逻辑没有问题 ...
- Linux基础命令—网卡
#1.实时查看网卡流量 #sar -n DEV 1 5 [每间隔1秒刷新一次,共5次] sar -n DEV 1 5 IFACE 表示设备名称 rxpck/s 每秒接收的包的数量 txpck/s 每秒 ...
- 不可不说的Java“锁”事
前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率.本文旨在对锁相关源码(本文中的源码来自JDK 8).使用场景进行举例,为读者介绍主流锁的知识点,以及不同的 ...
- 美团外卖Android Crash治理之路
Crash率是衡量一个App好坏的重要指标之一,如果你忽略了它的存在,它就会愈演愈烈,最后造成大量用户的流失,进而给公司带来无法估量的损失.本文讲述美团外卖Android客户端团队在将App的Cras ...
- redis 发布/订阅 模式
发布/订阅模式的命令如下: * 进入发布订阅模式的客户端,不能执行除发布订阅模式以上命令的其他命令,否则出错.
- 理解URI
---恢复内容开始--- 参考 https://zh.wikipedia.org/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E6%A0%87%E5%BF%97 ...
- [leetcode sort]179. Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...