题目大意

洛谷链接

在一个\(N×M\)的矩阵方格内分布着\(D\)颗豆子,每颗豆有不同的分值\(V_i\)。游戏者可以选择任意一个方格作为起始格,每次移动可以随意的走到相邻的四个格子,直到最终又回到起始格。最终游戏者的得分为所有被路径围住的豆豆的分值总和减去游戏者移动的步数。矩阵中某些格子内设有障碍物,任何时刻游戏者不能进入包含障碍物或豆子的格子。游戏者可能的最低得分为0,即什么都不做。

(例子可以打开链接查看,比较重要)

输入格式

第一行两个整数\(N\)和\(M\),为矩阵的边长。

第二行一个整数\(D\),为豆子的总个数。

第三行包含\(D\)个整数\(V_1\)到\(V_D\),分别为每颗豆子的分值。

接着N行有一个\(N×M\)的字符矩阵来描述游戏矩阵状态,0表示空格,#表示障碍物。而数字1到9分别表示对应编号的豆子。

输出格式

仅包含一个整数,为最高可能获得的分值。

样例输入

3 8

3

30 -100 30

00000000

010203#0

00000000

样例输出

38

数据范围

50%的数据满足\(1≤D≤3\)。

100%的数据满足\(1≤D≤9\),\(1≤N\), \(M≤10\),\(-10000≤V_i≤10000\)。

思路

基本方法

现学现卖

判断一个点是否在一个多边形内部的方法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。

正解

首先看到\(D\)很小,在10范围内,所以肯定是用状压DP了。

直接暴力枚举起点。状态不仅要记录当前的位置,还要记录经过每一个豆豆右射线的奇偶性。

经过每一个豆子右射线的奇偶性是一个\(D\)位01串,可将其视为\(D\)位的二进制数以方便记录(可用bitset,当然我这个蒟蒻没用orz)。

则\(f[i][j][k]\)表示坐标\((i,j)\),并且经过第t个豆豆右射线的奇偶性为 \(k>>t\&1\)。

然后可以写一个状压DP+SPFA解决问题,枚举起点和状态。

记得预处理坐标。

【状态压缩DP】SCOI2009 围豆豆的更多相关文章

  1. BZOJ1294 洛谷P2566 状态压缩DP 围豆豆

    传送门 题目描述 是不是平时在手机里玩吃豆豆游戏玩腻了呢?最近MOKIA手机上推出了一种新的围豆豆游戏,大家一起来试一试吧游戏的规则非常简单,在一个N×M的矩阵方格内分布着D颗豆子,每颗豆有不同的分值 ...

  2. 【BZOJ1294】[SCOI2009]围豆豆Bean 射线法+状压DP+SPFA

    [BZOJ1294][SCOI2009]围豆豆Bean Description Input 第一行两个整数N和M,为矩阵的边长. 第二行一个整数D,为豆子的总个数. 第三行包含D个整数V1到VD,分别 ...

  3. [BZOJ1294][SCOI2009]围豆豆Bean 射线法+状压dp+spfa

    1294: [SCOI2009]围豆豆Bean Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 458  Solved: 305[Submit][Sta ...

  4. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  5. POJ 3254 Corn Fields(状态压缩DP)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4739   Accepted: 2506 Descr ...

  6. [知识点]状态压缩DP

    // 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...

  7. HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP

    题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...

  8. DP大作战—状态压缩dp

    题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...

  9. 状态压缩dp问题

    问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...

  10. BZOJ-1226 学校食堂Dining 状态压缩DP

    1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...

随机推荐

  1. 简单地 Makefile 书写

    注意事项 每个标签分支前都不能用空格,必须用tab 标签外调用bash命令用 $(shell -),标签内可以正常使用 标签后可以指定其他标签,执行顺序是先执行其他标签,而后在执行自己 比如 all: ...

  2. 在CentOS Linux 7.5上安装MySQL

    本文来自与https://www.linuxidc.com/Linux/2018-05/152574.htm 随着CentOS 7 MySQL的发布,世界上最流行的开源关系数据库管理系统在CentOS ...

  3. 实现队列的基本操作(数据结构)-python版

    class Queue: def __init__(self): self.entries = [] self.length = 0 self.front = 0 def put(self, item ...

  4. pytest封神之路第四步 内置和自定义marker

    可以通过命令行查看所有marker,包括内置和自定义的 pytest --markers 内置marker 内置marker本文先讲usefixtures .filterwarnings .skip ...

  5. cnpm install 报错

    报错如图所示,请观下文 1,npm cache clean --force 2,进入文件,rm -rf node_modules/ ---- 暴力直接

  6. vue学习09 图片切换

    目录 vue学习09 图片切换 定义图片数组:imgList:[],列表数据使用数组保存 添加图片索引:index 绑定src属性:使用v-bind,v-bind指令可以设置元素属性,比如src 图片 ...

  7. 转载:pycharm IDE 导入自定义模块

    http://www.mamicode.com/info-detail-2241193.html

  8. springmvc 源码分析(二)-- DiapartcherServlet核心调用流程分析

    测试环境搭建: 本次搭建是基于springboot来实现的,代码在码云的链接:https://gitee.com/yangxioahui/thymeleaf.git 项目结构代码如下: 一: cont ...

  9. log4net 纯代码配置

    当需要输出的日志很多的时候,每次修改config都很麻烦,于是想可不可以动态生成. 网上找的案例都是获取单个appender/logger的,此处例子是任意logger,appender相同 log4 ...

  10. Android Handler MessageQueue Looper 消息机制原理

    提到Android里的消息机制,便会提到Message.Handler.Looper.MessageQueue这四个类,我先简单介绍以下这4个类 之间的爱恨情仇. Message 消息的封装类,里边存 ...