状压DP之愤怒的小鸟】的更多相关文章

题目 传送们P2831 题目较长,不加以赘述 直接步入正题 首先是数学知识,我们可以先根据给出的任意两只猪构建相应的抛物线,同时再构建完之后应判断抛物线的合法性(比如a小于0啊,等等),公式推演就不在这里说了,这里需要注意的是对于浮点型判断,不能单纯用相等,这里我们可以定义一个十分小的数,将两数差值与其相比,一般用到数为\(1e-6\)就可了,根据两个两只猪得来的抛物线,将其他猪带入,求相应抛物线所能经过的所有猪的状态,与原状态求或,即\(num[i][j]|=(1<<(k-1))\),就是\…
[NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如y=ax2+bx的曲线,其中a,b是Kiana指定的参数,且必须满足a<0. 当小鸟落回地面(即x轴)时,它就会瞬间消失. 在游戏的某个关卡里,平面的第一象限中有n只绿色的小猪,其中第i只小猪所在的坐标为(xi,yi). 如果某只小鸟的飞行…
愤怒的小鸟 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0,0) 处,每次 Kiana 可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如 y=ax^2+bx的曲线,其中 a,b是Kiana 指定的参数,且必须满足 a<0,a,b 都是实数. 当小鸟落回地面(即 x 轴)时,它就会瞬间消失. 在游戏的某个关卡里,平面的第一象限中有 n 只绿色的小猪,其中第 i 只小猪所在的坐标为 (xi​,yi​) . 如果某…
题面: 传送门:https://www.luogu.org/problemnew/show/P2831 Solution 首先,我们可以先康一康题目的数据范围:n<=18,应该是状压或者是搜索. 事实上,这题搜索和状压DP都是能做的. (因为搜索在我心中留下了阴影(斗地主),所以在这里,我讲状压DP的做法) 根据我们以往设计状压DP的经验,我们可以很轻松地设计这一题的状态: 设f[i]表示打下的猪猪的状态为i的方案数,(状态在这里用二进制方式来表示,例如:00101表示打下了第1和第3只猪) 那…
题目描述 题意大概就是坐标系上第一象限上有N只猪,每次可以构造一条经过原点且开口向下的抛物线,抛物线可能会经过某一或某些猪,求使所有猪被至少经过一次的抛物线最少数量. 原题中还有一个特殊指令M,对于正解并没有什么卵用, 输入输出 第一行一个数T,表示数据组数 对于每组数据,第一行2个整数N,M, 接下来N行每行2个正实数想x,y表示第i只猪的坐标 对于每组数据,输出一行一个数表示最少的抛物线数量 数据范围 N<=18,T<=30 那么N范围只有18,可以想到状压DP,我们可以发现,2点确定一条…
由范围可以想到状压dp 两个点(再加上原点)是可以确定一个抛物线的,除非它们解出来a>=0,在本题中是不合法的 这样的话,我们可以预处理出由任意两个点确定的抛物线所经过的所有的点(要特别规定一下自己和自己确定的抛物线只经过自己) 然后设状态s表示目前已经有哪些点被击中了,然后我们钦定这次就要打那个最小的还没击中的点(因为吃枣都要打的嘛),再枚举出另一个还没经过的点,就能得到转移方程 $f[s|line[i][j]]=max\{f[s]+1\}$,其中$line[i][j]$表示i.j两点确定的抛…
题目什么大家都清楚 题解 我们知道,三点确定一条抛物线,现在这条抛物线过原点,所以任意两只猪确定一条抛物线.通过运算的出对于两头猪(x1,y1),(x2,y2),他们所在抛物线a=(y1*x2-y2*x1)/(x1*x1*x2-x1*x2*x2),b=(y1*x2*x2-y2*x1*x1)/(x1*x2*x2-x1*x1*x2) 由于猪很少,我们可以枚举出所有的抛物线,以及确定每一条抛物线能击中的猪 怎么确定射中所有猪的最优解呢? 状压DP 我们将猪的存活状态用二进制表示. 例如有8只猪,000…
题意 题目链接 Sol 这题....我样例没过就A了??..算了,就当是样例卡精度吧.. 直接状压dp一下,\(f[sta]\)表示干掉\(sta\)这个集合里面的鸟的最小操作数 转移的时候判断一下一次能干掉多少鸟.. #include<bits/stdc++.h> #define LL long long using namespace std; const int MAXN = 100001; inline int read() { char c = getchar(); int x =…
题目描述 题意大概就是坐标系上第一象限上有N只猪,每次可以构造一条经过原点且开口向下的抛物线,抛物线可能会经过某一或某些猪,求使所有猪被至少经过一次的抛物线最少数量. 原题中还有一个特殊指令M,对于正解并没有什么卵用, 输入输出 第一行一个数T,表示数据组数 对于每组数据,第一行2个整数N,M, 接下来N行每行2个正实数想x,y表示第i只猪的坐标 对于每组数据,输出一行一个数表示最少的抛物线数量 数据范围 N<=18,T<=30 那么N范围只有18,可以想到状压DP,我们可以发现,2点确定一条…
题意: Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如y=ax^2+bx的曲线,其中a,b是Kiana指定的参数,且必须满足a<0. 当小鸟落回地面(即x轴)时,它就会瞬间消失. 在游戏的某个关卡里,平面的第一象限中有n只绿色的小猪,其中第i只小猪所在的坐标为(xi,yi). 如果某只小鸟的飞行轨迹经过了(xi,yi),那么第i只小猪就会被消灭掉,同时…