【Luogu】P2831愤怒的小鸟(手算抛物线+状压DP)
设f[s]表示二进制集合表示下的s集合都打掉用了多少小鸟。
预处理出lne[i][j]表示i、j确定的抛物线能打掉的小鸟集合。
于是就有f[s|lne[i][j]]=min(f[s|lne[i][j]],f[s]+1);
什么?两个点确定不了抛物线?原点是不是被忘掉了……
代码如下
#include<cstdio>
#include<cctype>
#include<cmath>
#include<iostream>
#include<cstring>
using namespace std;
double x[],y[];
int lne[][];
int f[]; int main(){
int T;
cin>>T;
while(T--){
int n,m;
cin>>n>>m;
memset(lne,,sizeof(lne));
memset(f,,sizeof(f));
for(int i=;i<=n;++i) cin>>x[i]>>y[i];
for(int i=;i<=n;++i)
for(int j=;j<=n;++j){
if(i==j) continue;
double d=y[j]-(y[i]/x[i]*x[j]),c=x[j]*(x[j]-x[i]);
double a=d/c,b=(y[i]-x[i]*x[i]*a)/x[i];
if(a<)
for(int k=;k<=n;++k)
if(abs(x[k]*x[k]*a+x[k]*b-y[k])<=1e-) lne[i][j]|=(<<(k-));
}
int Max=(<<n)-;
for(int i=;i<=n;++i) f[<<(i-)]=;
f[]=;
for(int i=;i<=Max;++i){
int pos=;
while(i>>(pos-)&) ++pos;
if(f[i|(<<(pos-))]>f[i]+) f[i|(<<(pos-))]=f[i]+;
for(int j=pos+;j<=n;++j)
f[i|lne[pos][j]]=min(f[i|lne[pos][j]],f[i]+);
}
printf("%d\n",f[Max]);
}
return ;
}
【Luogu】P2831愤怒的小鸟(手算抛物线+状压DP)的更多相关文章
- 洛谷P2831 愤怒的小鸟——贪心?状压DP
题目:https://www.luogu.org/problemnew/show/P2831 一开始想 n^3 贪心来着: 先按 x 排个序,那么第一个不就一定要打了么? 在枚举后面某一个,和它形成一 ...
- [NOIP2016]愤怒的小鸟 D2 T3 状压DP
[NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...
- Luogu 2157 [SDOI2009]学校食堂 - 状压dp
Solution 比较好想的dp, 但是坑不少QAQ, 调半天 由于容忍度 $b_i$<= 7, 所以可以考虑将第$i$个人接下来的$b_i$ 个人作为一个维度记录状态. 于是我们定义数组$f[ ...
- 洛谷 P3112 后卫马克 —— 状压DP
题目:https://www.luogu.org/problemnew/show/P3112 状压DP...转移不错. 代码如下: #include<iostream> #include& ...
- 洛谷 3112 [USACO14DEC]后卫马克Guard Mark——状压dp
题目:https://www.luogu.org/problemnew/show/P3112 状压dp.发现只需要记录当前状态的牛中剩余承重最小的值. #include<iostream> ...
- [Luogu P2831] 愤怒的小鸟 (状压DP)
题面: 传送门:https://www.luogu.org/problemnew/show/P2831 Solution 首先,我们可以先康一康题目的数据范围:n<=18,应该是状压或者是搜索. ...
- 洛谷P2831 愤怒的小鸟(状压dp)
题意 题目链接 Sol 这题....我样例没过就A了??..算了,就当是样例卡精度吧.. 直接状压dp一下,\(f[sta]\)表示干掉\(sta\)这个集合里面的鸟的最小操作数 转移的时候判断一下一 ...
- NOIP2016愤怒的小鸟 [状压dp]
愤怒的小鸟 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0,0) 处,每次 Kiana 可以用它向第一象限发射一只红色的小鸟, ...
- Noip2016愤怒的小鸟(状压DP)
题目描述 题意大概就是坐标系上第一象限上有N只猪,每次可以构造一条经过原点且开口向下的抛物线,抛物线可能会经过某一或某些猪,求使所有猪被至少经过一次的抛物线最少数量. 原题中还有一个特殊指令M,对于正 ...
随机推荐
- LookAround开元之旅(持续更新中...)
应用介绍随便瞧瞧是一款为android用户量身定做的免费图文资讯软件集美食,文学,语录等频道于一体界面简洁,操作流畅,图文分享,个性收藏是广大卓粉的必备神器APK下载 -->https://ra ...
- KVC/KVO 本质
KVO 的实现原理 KVO是关于runtime机制实现的 当某个类的对象属性第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter方法.派生类 ...
- Java、Node.js、PHP还是.Net? 无论你选谁,我都能教你一招!
七夕如期而至,不该来的终究还是来了.再傲娇的单身贵族恐怕也难免在今天会感觉一丝丝的空虚.还好你关注了我,因为接下来我准备了三大招教你一个人…..也可以优雅地过七夕. 招式一:移形幻影,无中生有 七夕当 ...
- jmeter并发定时器
jmeter并发定时器
- UVA 11324 The Largest Clique (强连通分量,dp)
给出一个有向图,求一个最大的结点集合,任意两个点u,v.u可到达v或v可到达u. 一个强连通分量肯定一起选的.而且只能在一条路径上. 所以先找出所有scc,然后缩点找一条最大权的路径,按拓扑序跑DAG ...
- 量化投资,你需要了解的A股财务数据
摘要:基本面量化是应用量化研究领域的重头戏,财务数据的整理和加工是基本面量化的第一步.本文梳理了财务数据的基本知识,包括报表类型.数据来源.调整更正和使用原则等,并给出了单季度和TTM数据的计算流程. ...
- python matplotlib 可视化操作实例
具体代码: # encoding: utf-8 # coding = utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') from ...
- WINDOWS-API:操作网络映射盘-WNetAddConnection2
首先在VC项目属性,开发依赖项里添加MPR.lib:然后,配置文件里填入以下信息. //本地映射盘符 MapDriver=T: //目标根目录 //MapSharedPath=\\192.168.0 ...
- spring中常用的注解
使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...
- POI读word doc 03 文件的两种方法
Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的.在hwpf里面我们使用HWPFDocument来表示一个word doc文档.在HWPFDocument里面有这么几个 ...