题目大意:有N*N个点的田野,然后有k个点是用来放稻草人的,每个稻草人对周围满足曼哈顿距离的庄稼有保护作用

问最小的稻草人的个数能够保护所有庄稼,如果不能保护则输出-1

注意的地方:

1.放稻草人的点不需要计算,因为不是庄稼

2.可能存在0的解,也就是k=N*N时

思路:二进制枚举所有情况,找到最小解

代码如下:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
const int maxs = 51;
int n,k;
bool vis[maxs][maxs];
struct Point
{
int x,y;
int dis;
}point[11]; bool judge(Point p[],int t,Point goal)
{
for(int i=0;i<t;i++)
//满足曼哈顿距离的条件
if(fabs(p[i].x-goal.x)+fabs(p[i].y-goal.y)<=p[i].dis)
return true;
return false;
} bool solve(Point p[],int t)
{
memset(vis,false,sizeof(vis));
for(int i=0;i<k;i++)
vis[point[i].x][point[i].y]=true;
Point goal;
for(int x=1;x<=n;x++)
for(int y=1;y<=n;y++)
if(!vis[x][y])
{
goal.x=x; goal.y=y;
if(!judge(p,t,goal))
return false;
}
return true;
}
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%d",&n)!=EOF&&n)
{
int ans = 20;//因为最大为10
scanf("%d",&k);
for(int i=0;i<k;i++)
scanf("%d%d",&point[i].x,&point[i].y);
for(int i=0;i<k;i++)
scanf("%d",&point[i].dis);
if(k==n*n)
{
printf("0\n");
continue;
}
int total = 1<<k;
//二进制枚举
for(int i=1;i<total;i++)
{
int temp;
Point p[11];
memset(p,0,sizeof(p));
int cnt=0;
for(int j=0,s=1;j<k;j++)
{
if(i&s)
p[cnt++]=point[j];
s=s<<1;
}
if(solve(p,cnt))
{
temp=cnt;
if(temp<ans)
ans=temp;
}
}
if(ans==20)
printf("-1\n");
else
printf("%d\n",ans);
}
}

hdu4462--曼哈顿距离的更多相关文章

  1. Hdu4311 || 4312Meeting point-1/-2 n个点中任意选一个点使得其余点到该点曼哈顿距离之和最小

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  2. Atitti knn实现的具体四个距离算法 欧氏距离、余弦距离、汉明距离、曼哈顿距离

    Atitti knn实现的具体四个距离算法  欧氏距离.余弦距离.汉明距离.曼哈顿距离 1. Knn算法实质就是相似度的关系1 1.1. 文本相似度计算在信息检索.数据挖掘.机器翻译.文档复制检测等领 ...

  3. 【POJ 3241】Object Clustering 曼哈顿距离最小生成树

    http://poj.org/problem?id=3241 曼哈顿距离最小生成树模板题. 核心思想是把坐标系转3次,以及以横坐标为第一关键字,纵坐标为第二关键字排序后,从后往前扫.扫完一个点就把它插 ...

  4. 【HDU 4311】Meeting point-1(前缀和求曼哈顿距离和)

    题目链接 正经解法: 给定n个点的坐标,找一个点,到其他点的曼哈顿距离之和最小.n可以是100000.大概要一个O(nlogn)的算法.算曼哈顿距离可以把x和y分开计算排好序后计算前缀和就可以在O(1 ...

  5. hdu4666 Hyperspace ——曼哈顿距离

    link:http://acm.hdu.edu.cn/showproblem.php?pid=4666 这题学会了怎么处理曼哈顿距离. 比如维数是k,那么每个点有2^k个状态,求出在每个状态下,所有点 ...

  6. hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)

    Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  7. poj 2926:Requirements(最远曼哈顿距离,入门题)

    Requirements Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3908   Accepted: 1318 Desc ...

  8. 某个点到其他点的曼哈顿距离之和最小(HDU4311)

    Meeting point-1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. HDU 4539 郑厂长系列故事――排兵布阵(曼哈顿距离)

    这虽然是中文题,然而没看懂,不懂的地方,就是在曼哈顿距离这块,网上搜索了一下,写了个程序,是测试曼哈顿距离的. 曼哈顿距离:两点(x1,y1)(x2,y2)的曼哈顿距离为|x1-x2|+|y1-y2| ...

  10. hdu 4666 最大曼哈顿距离

    思路:这题我是看了题目后,上百度搜了一下才知道还有求最大曼哈顿距离的方法.直接把代码copy过来,研读一下,知道了代码实现机制,自然就很容易想到用优先队列来维护每种状态下的xi,yi之和的最大值最小值 ...

随机推荐

  1. 5. Import the project download from Git

    1.Recover eclipse project Copy .project from other project(You can new a project first in eclipse. T ...

  2. 12月6日 被引入的jsp 页面,引入 js 要注意结束符 要用 </script> 而不是 />

    12月6日  被引入的jsp 页面,引入 js 要注意结束符 要用  </script> 而不是 />

  3. 新电脑的操作系统win10的所有设置问题汇总

    上来改的win7发现很多驱动没法装,装了也不能用,后来只能改win10了,另外win7的风扇声音也很大. 1.关闭win10自动更新.在服务里面禁用winupdate 2.注销改成了点头像,然后点注销 ...

  4. Jsp的语法和指令

    Jsp的三种注释 前端语言注释:<!-- --> 会被转译,也会被发送,但是不会被浏览器执行 java语言注释: 会被转译,但是不会被servlet执行 Jsp注释:<%--  -- ...

  5. 2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)

    传送门 一道神奇的期望状压dp. 用f[i][j]f[i][j]f[i][j]表示目前在第i轮已选取物品状态为j,从现在到第k轮能得到的最大贡献. 如果我们从前向后推有可能会遇到不合法的情况. 所以我 ...

  6. yii2 ActiveRecord的生命周期

    AR的生命周期 http://www.yii-china.com/doc/guide/db_active_record.html 理解AR的生命周期对于你操作数据库非常重要.生命周期通常都会有些典型的 ...

  7. IntelliJ IDEA 2017版 spring-boot 实现jpa基本部署,通过实体类自动建立数据库

    一.添加Spring Boot JPA-Hibernate步骤 1.在pom.xml添加mysql,spring-data-jpa依赖      2.在application.properties文件 ...

  8. 反爬虫破解系列-汽车之家利用css样式替换文字破解方法

    网站: 汽车之家:http://club.autohome.com.cn/ 以论坛为例 反爬虫措施: 在论坛发布的贴子正文中随机抽取某几个字使用span标签代替,标签内容位空,但css样式显示为所代替 ...

  9. netty 原理

    netty 实现 1. 各组件之间的关系 每个ServerBootstrap与一个事件循环对象(一个线程)都会与一个Channel绑定,如NioServerSocketChannel 2. 如何绑定 ...

  10. B样条参数曲线学习(1)

    B样条参数曲线学习 Bezier曲线有许多优越性,但有两点不足: (1) 特征多边形的顶点个数决定了Bezier曲线的阶次,并且在阶次较大时,特征多边形对曲线的控制将会减弱: (2) Bezier曲线 ...