P3622 [APIO2007] 动物园 -题解
好写 爱写 没事干 所以有了这篇题解
洛谷P3622 [APIO2007] 动物园 题解
题目说的挺繁琐,其实就传达了一个很简单的信息:
\(n\)个动物,\(c\)个小孩,每个小孩能看到\(5\)个动物(所在的位置)\(E\)到\(E+4\),有\(F\)个害怕的动物,\(L\)个喜欢的动物。如果视野中有至少一个喜欢的动物,或者讨厌的动物被移走至少一个,他就会高兴。你可以任意移走动物,求最多有几个小孩高兴。
由于每个视野固定长度为\(5\),所以只要状压每五个动物被移走的状态即可,枚举范围为\(0\) ~ \(2^5-1\),即\(0\) ~ \(31\)。
输入的时候做好初始化工作,得到数组\(num[N][S]\),表示从\(N\)开始5个动物在\(S\)状态下高兴的孩子数。
然后整个循环遍历一遍,状态转移方程为:
\]
还有就是:
定义局部变量一定要记得初始化啊啊啊啊啊啊!!!
咳 下面是代码:
**code**
/*函数内定义变量一定要初始化啊啊啊啊啊啊*/
#include<bits/stdc++.h>
#define fo(x,y,z) for(int (x)=(y);(x)<=(z);(x)++)
#define fu(x,y,z) for(int (x)=(y);(x)>=(z);(x)--)
using namespace std;
typedef long long ll;
inline int qr()
{
char ch=getchar();int x=0,f=1;
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*f;
}
#define qr qr()
const int Ratio=0;
const int N=50005;
const int maxx=INT_MAX;
const double eps=1e-8;
int n,m,ans;
#define check(st) ((st&l)||(~st&d))
int num[N][50],zl[N][50];
int main()
{
// freopen("1.in","r",stdin);
// freopen("1.out","w",stdout);
n=qr,m=qr;
ans=-maxx;
fo(i,1,m)
{
int a=qr,b=qr,c=qr,l=0,r=0,d=0;//***
fo(j,1,b)
d=qr,d=(d-a+n)%n,l|=1<<d;
fo(j,1,c)
d=qr,d=(d-a+n)%n,r|=1<<d;
fo(j,0,31)
if((j&l)||(~j&r))
num[a][j]++;//第a个点开始状态为j满足的小孩的个数
}
fo(i,0,31)//每个人只能看到5动物 枚举状态
{
fo(j,0,35)
zl[0][j]=-maxx;
zl[0][i]=0;
fo(j,1,n)//遍历以n为起点向下五个状态的情况
fo(k,0,31)
zl[j][k]=max(zl[j-1][(k&15)<<1],zl[j-1][(k&15)<<1|1])+num[j][k];
ans=max(ans,zl[n][i]);
}
printf("%d\n",ans);
return Ratio;
}
\(End.\)
彩蛋

P3622 [APIO2007] 动物园 -题解的更多相关文章
- P3622 [APIO2007]动物园
题目链接 题意分析 这是一道状压\(DP\)的题 一个人只可以欣赏到\(5\)只动物 显然可以状压 我们用\(dp[i][j]\)表示当前\([i,i+4]\)中这\(5\)只动物的状态\(j\) 在 ...
- 洛谷 P3622 [APIO2007]动物园【状压dp】
看成网络流建图想了好久... 实际上5个是可以状压的 设f[i][k]为到第i个围栏状态为k的方案数,因为考虑到重复,设g[i][k]记录i开始,状态为k的孩子有几个 状态转移很好想:f[j][k]= ...
- Luogu [P3622] [APIO2007]动物园
题目链接 比较费脑子的一道题 先说题目核心思想 : 状压dp 环的处理我们先不管. 我们设 dp[j][s] 表示 到达动物 j 且 [ j , j+5) 这五个动物状态为s时 最多能使多少小朋友开心 ...
- P3622 [APIO2007]【一本通提高状态压缩类动态规划】动物园
广告 绿树公司 - 官方网站:https://wangping-lvshu.github.io/LvshuNew/ 绿树智能 - 官方网站:https://wangping-lvshu.github. ...
- [APIO2007]动物园 --- 状压DP
[APIO2007]动物园 题目描述 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物. 如下图所示: 你是动物园的公共主管.你要做的是,让每 ...
- 题解 洛谷P3622/BZOJ1151【[APIO2007]动物园】
这一道题,我也是搞了很久才搞懂的(也就两个多小时). 感谢Rayment大佬的题解! 我们进入正题. 对于一个笼子里的动物,我们可以选择撤走或不撤走,可以用0和1来表示,很容易就想到二进制,想到状压d ...
- 【题解】APIO2007动物园
首先一眼感受到这题特别的性质……5个?这么小的,感觉就像是状压.脑补了一下,如果没有环的话应该很好做吧……有环怎么办?5真的很小的,随便乱搞肯定也可以.那就放在外面暴力枚举吧.然后正解就出来了. 然而 ...
- 【KMP】洛谷P2375 [NOI2014]动物园 题解
一开始的方向应该对了,但是没有想到合理的优化还是没写出来…… 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己 ...
- [APIO2007]动物园
题目描述 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物. 你是动物园的公共主管.你要做的是,让每个来动物园的人都尽可能高兴.今天有一群小朋 ...
- APIO 2007 动物园 题解
链接题面 看清楚找到小数据范围,第一维表示遍历到的栅栏,第二维是五位状态 先预处理每个状态会使多少小朋友高兴 方程是 f[i][j]=max(f[(i&((1<<4)-1))&l ...
随机推荐
- #SPFA,动态规划#洛谷 1772 [ZJOI2006]物流运输
题目 分析 改变航线可以通过费用提前计算实现, 这样就不用增加次数这一维,也没有必要, 设\(dp[i]\)表示前\(i\)天的总费用 那么\(dp[i]=\min\{dp[j-1]+(i-j+1)* ...
- JDK12的新特性:teeing collectors
目录 简介 talk is cheap, show me the code Teeing方法深度剖析 Characteristics 总结 简介 JDK12为java.util.stream.Coll ...
- org.xml.sax.SAXParseException; lineNumber: 11;
org.xml.sax.SAXParseException; lineNumber: 11; 点击clean 然后再启动
- 为你推荐一款高效的IO组件——okio
原文:https://mp.weixin.qq.com/s/XnNhSq8ESoslb2DQEzMbCQ,点击链接查看更多技术内容. 前不久,三方组件库上新了一批JS/eTS组件,其中就包括oki ...
- Mysql之SQL语句初级用法
前言 本文通过简单的示例去了解Mysql的DDL.DML.DCL的语句用法. 一.DDL语句 DDL(Data Definition Language)语句: 数据定义语言,主要是进行定义/改变表的结 ...
- 老夫当年手写的js动画库
前言 当年我学习js的时候,那时候学生时代不知道有jquery,所以手写了一些东西,留下的不多作为回忆. 正文 ``` javascript window.onload = function () { ...
- 分享一款嵌入式开源按键框架代码工程MultiButton
一.工程简介 MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块. Github地址:https://github.com/0x1abin/MultiButton 这个项目非常精简,只 ...
- TypeScript 中类的理解?应用场景?
一.是什么 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础 ❝ 类是一种用户定义的引用数据类型,也称类类型 ❞ 传统的面向对象语 ...
- 07cj031,07CJ03-1图集免费下载
简介 07CJ03-1轻钢龙骨石膏板隔墙.吊顶图集是中国建筑标准设计研究院组织编写的一部针对轻钢龙骨.石膏板材料用于非承重隔墙.室内吊顶装修的装修.建造参考资料,为用户提供专业的建造参考 下载 有需要 ...
- SELECT...FROM 表 a,( SELECT...FROM...WHERE...) tc...的一些注意以及多字段之间的模糊查询
将sql查询结果作为一个表来查询的时候的一些注意事项 因为工作,发现了这种sql的写法,但是有的时候感觉并不是自己想要的结果,自己试着玩了属于是 简单来说,这个查询并不是拼接结果的,而是将结果按照一个 ...