P2831 愤怒的小鸟——状压】的更多相关文章

题面: 传送门:https://www.luogu.org/problemnew/show/P2831 Solution 首先,我们可以先康一康题目的数据范围:n<=18,应该是状压或者是搜索. 事实上,这题搜索和状压DP都是能做的. (因为搜索在我心中留下了阴影(斗地主),所以在这里,我讲状压DP的做法) 根据我们以往设计状压DP的经验,我们可以很轻松地设计这一题的状态: 设f[i]表示打下的猪猪的状态为i的方案数,(状态在这里用二进制方式来表示,例如:00101表示打下了第1和第3只猪) 那…
题意 题目链接 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 =…
P2831 愤怒的小鸟 抛物线过原点,只要再找两个就能确定抛物线: 处理出两两之间的抛物线能过哪些点,状态压缩: 但是直接枚举每一条抛物线常数太大会T,所以我们需要预处理一个low_bit表示当前状态下第一个没选的,即是二进制下第一个不是1的位置: 因为我们早晚都要把它变成1,所以先处理他就可以达到要求: 注意精度问题: #include<cmath> #include<cstdio> #include<cstring> #include<algorithm>…
P2831 愤怒的小鸟 题意 题目描述 Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于\((0,0)\)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如\(y=ax^2+bx\)的曲线,其中\(a,b\)是Kiana指定的参数,且必须满足\(a<0\),\(a,b\)都是实数. 当小鸟落回地面(即\(x\)轴)时,它就会瞬间消失. 在游戏的某个关卡里,平面的第一象限中有\(n\)只绿色的小猪,其中第\(i\)…
P2831愤怒的小鸟 题目描述 \(Kiana\) 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 \((0,0)\) 处,每次 \(Kiana\) 可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如 \(y=a*x^2+b*x\) 的曲线,其中 \(a,b\) 是 \(Kiana\) 指定的参数,且必须满足 \(a<0\),\(a,b\) 都是实数. 当小鸟落回地面(即 \(x\) 轴)时,它就会瞬间消失. 在游戏的某个关卡里,平面的第…
这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了. 题干: 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (,)(,) 处,每次 Kiana 可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如 y=ax^+bxy=ax +bx 的曲线,其中 a,ba,b 是Kiana 指定的参数,且必须满足 a < 0a<,a,ba,b 都是实数. 当小鸟落回地面(即 xx 轴)…
愤怒的小鸟 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0,0) 处,每次 Kiana 可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如 y=ax^2+bx的曲线,其中 a,b是Kiana 指定的参数,且必须满足 a<0,a,b 都是实数. 当小鸟落回地面(即 x 轴)时,它就会瞬间消失. 在游戏的某个关卡里,平面的第一象限中有 n 只绿色的小猪,其中第 i 只小猪所在的坐标为 (xi​,yi​) . 如果某…
由范围可以想到状压dp 两个点(再加上原点)是可以确定一个抛物线的,除非它们解出来a>=0,在本题中是不合法的 这样的话,我们可以预处理出由任意两个点确定的抛物线所经过的所有的点(要特别规定一下自己和自己确定的抛物线只经过自己) 然后设状态s表示目前已经有哪些点被击中了,然后我们钦定这次就要打那个最小的还没击中的点(因为吃枣都要打的嘛),再枚举出另一个还没经过的点,就能得到转移方程 $f[s|line[i][j]]=max\{f[s]+1\}$,其中$line[i][j]$表示i.j两点确定的抛…
看这范围都知道是状压吧... 题目大意就不说了嘿嘿嘿 网上流传的写法复杂度大都是O(2^n*n^2),这个复杂度虽然官方数据可以过,但是在洛谷上会TLE[百度搜出来前几个博客的代码交上去都TLE了],于是造成了洛谷上这题提交5k3只AC了250人,AC率只有4.7%...[这么卡常真的丧病,还是因为老爷机? 所以我就写写怎么优化吧OWO 首先还是先求出两两猪的解析式和能穿过多少只猪,记得如果两个猪的横坐标相同就要continue,a和b的公式随手推一推.然后枚举状态数,再枚举哪两只猪被射,记得处…
题目链接:https://vijos.org/p/2008 现在回过头去看去年的考试题,发现都不是太难,至少每道题都有头绪了... 这道题的数据范围是18,这么小,直接暴力呗,跑个暴搜就完了,时间也就O(n^3) [思路] 先枚举任意两个的抛物线,这个位置需要O(n^2),接着针对每一个抛物线看可以经过多少点,暴力跑一个,时间复杂度O(n^3),不过这一步可以在枚举抛物线时做.. 接着是用一个数组mark[i][j]记录经过点i,j的抛物线可以穿过哪些点..这个位置,我们就可以用状态压缩解决,一…