第一眼看成爆搜的状压dp,膜Chester大神犇。

考虑到三个不在同一直线上的点可以确定一条抛物线,而固定点$(0, 0)$和不在同一直线上这两个条件是题目中给定的,所以我们只要枚举两个点然后暴力算抛物线,然后chk一遍观察一下多少点在这一条抛物线上就行了。

想到状压之后状态和方程就显然了。

注意判解出来的抛物线$a \leqslant 0$的情况, eps开小一点。

因为决策集合的大小是$O(n ^ {2})$级别的,所以时间复杂度为$O(Tn^{2}2^{n})$。

Code:

#include <cstdio>
#include <cstring>
using namespace std;
typedef double db; const int N = ;
const int S = ( << ) + ;
const int inf = 0x3f3f3f3f;
const db eps = 1e-; int testCase, n, m, q[N * (N + )], f[S];
bool vis[S]; struct Node {
db x, y;
} a[N]; inline db fabs(db x) {
return x > ? x : -x;
} inline bool chk0(db x) {
return fabs(x) < eps;
} inline void chkMin(int &x, int y) {
if(y < x) x = y;
} inline int calc(int u, int v) {
db a1 = a[u].x * a[u].x, b1 = a[u].x, c1 = a[u].y;
db a2 = a[v].x * a[v].x, b2 = a[v].x, c2 = a[v].y;
if(chk0((b1 * a2 - b2 * a1)) || chk0((a1 * b2 - b1 * a2))) return ;
db y = (c1 * a2 - c2 * a1) / (b1 * a2 - b2 * a1);
db x = (c1 * b2 - c2 * b1) / (a1 * b2 - b1 * a2);
if(x > ||chk0(x)) return ;
int res = ( << (u - )) | ( << (v - ));
for(int i = ; i <= n; i++) {
if(i == u || i == v) continue;
if(chk0(x * a[i].x * a[i].x + y * a[i].x - a[i].y)) res |= ( << (i - ));
}
return res;
} int main() {
for(scanf("%d", &testCase); testCase--; ) {
scanf("%d%d", &n, &m);
for(int i = ; i <= n; i++) scanf("%lf%lf", &a[i].x, &a[i].y); m = ;
memset(vis, , sizeof(vis));
for(int i = ; i <= n; i++)
for(int j = ; j < i; j++) {
int s = calc(i, j);
if(vis[s] || s == ) continue;
vis[s] = ;
q[++m] = s;
}
for(int i = ; i <= n; i++) q[++m] = ( << (i - )); /* for(int i = 1; i <= m; i++)
printf("%d ", q[i]);
printf("\n"); */ memset(f, 0x3f, sizeof(f));
f[] = ;
for(int s = ; s < ( << n); s++)
for(int i = ; i <= m; i++)
chkMin(f[s | q[i]], f[s] + ); printf("%d\n", f[( << n) - ]);
}
return ;
}

Luogu 2831 [NOIP2016] 愤怒的小鸟的更多相关文章

  1. 洛谷 2831 (NOIp2016) 愤怒的小鸟——仅+1所以bfs优化

    题目:https://www.luogu.org/problemnew/show/P2831 状压dp.跑得很慢.(n^2*2^n) 注意只打一只猪的情况. #include<iostream& ...

  2. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  3. 【洛谷P2831】[NOIP2016]愤怒的小鸟

    愤怒的小鸟 题目链接 本来是刷状压DP的,然而不会.. 搜索是比较好想的,直接dfs就行了 我们可以知道两只猪确定一条抛物线 依次处理每一只猪,有以下几种方法: 1.先看已经建立的抛物线是否能打到这只 ...

  4. NOIP2016愤怒的小鸟 [状压dp]

    愤怒的小鸟 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0,0) 处,每次 Kiana 可以用它向第一象限发射一只红色的小鸟, ...

  5. Luogu P1600[NOIP2016]day1 T2天天爱跑步

    号称是noip2016最恶心的题 基本上用了一天来搞明白+给sy讲明白(可能还没讲明白 具体思路是真的不想写了(快吐了 如果要看,参见洛谷P1600 天天爱跑步--题解 虽然这样不好但我真的不想写了 ...

  6. [NOIP2016]愤怒的小鸟

    题目描述 Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形 ...

  7. Noip2016愤怒的小鸟(状压DP)

    题目描述 题意大概就是坐标系上第一象限上有N只猪,每次可以构造一条经过原点且开口向下的抛物线,抛物线可能会经过某一或某些猪,求使所有猪被至少经过一次的抛物线最少数量. 原题中还有一个特殊指令M,对于正 ...

  8. [NOIP2016]愤怒的小鸟 D2 T3

    Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的 ...

  9. luogu2831 [NOIp2016]愤怒的小鸟 (状压dp)

    由范围可以想到状压dp 两个点(再加上原点)是可以确定一个抛物线的,除非它们解出来a>=0,在本题中是不合法的 这样的话,我们可以预处理出由任意两个点确定的抛物线所经过的所有的点(要特别规定一下 ...

随机推荐

  1. 从内存中直接运行PE程序

    效果是这样的,假设一个PE数据在内存里面了,我们利用下面我讲的技术可以直接建立一个进程并运行这个PE,当然直接在本进程运行在可以,这两钟技术在前些时日我都有实现,今天我只说关于建立进程并运行的,当然, ...

  2. Linux Matlab mex gcc 版本

    一般MATLAB的mex支持的gcc版本都比最新的gcc要低一些,所以一般要配置一下. 假设当前版本的gcc是4.8,matlab支持4.6,可以使用以下的方式解决(任选一种).(自己装好gcc-4. ...

  3. [转]深入详解javascript之delete操作符

    最近重新温习JS,对delete操作符一直处于一知半解的状态,偶然发现一篇文章,对此作了非常细致深入的解释,看完有茅塞顿开的感觉,不敢独享,大致翻译如下. 原文地址:http://perfection ...

  4. 3.Monkey Script小案例

    1.实现打开搜狗搜索APP,在搜索框输入内容,点击回车,重复2次运行 2.实现代码如下所示: type=user count=10 speed=1.0 start data >> Laun ...

  5. WPF开发中Designer和码农之间的合作

    想要用WPF做出一流的软件界面, 必须要Designer和码农通力合作.理想的情况是平时并行开发,Designer用Expression套件(包括Design和Blend)来设计界面,码农开发Mode ...

  6. MySQL 数据库备份种类以及常用备份工具汇总

    1,数据库备份种类 按照数据库大小备份,有四种类型,分别应用于不同场合,下面简要介绍一下: 1.1完全备份 这是大多数人常用的方式,它可以备份整个数据库,包含用户表.系统表.索引.视图和存储过程等所有 ...

  7. HTTP-Runoob:HTPP Content-Type

    ylbtech-HTTP-Runoob:HTPP Content-Type 1.返回顶部 1. HTTP content-type Content-Type,内容类型,一般是指网页中存在的Conten ...

  8. 杂项:VS调试技巧之附加进程

    ylbtech-杂项:VS调试技巧之附加进程 1. 摘录返回顶部 1. 用过VS一段时间的程序员们相信都有过这种调试经历:每次按下F5进行断点调试时,都要等待好长时间:先让解决方式编译通过,然后启动V ...

  9. spring学习十三

    1: RESTful URL : 域和端口 / servlet / 资源 / 参数id 2:  静态资源访问处理? 采用RESTful架构后,需要将web.xml中控制器拦截的请求设置为/,这样会将c ...

  10. qq图片选择效果的处理

    QQ中图片鼠标一选择,整个图片就像加了个阴影一样,这个效果一般人都不会注意,突然没事测试了一下,原来qq是把原来每个像素的颜色变成了相反的颜色. 电脑中的三原色为0-255,中间值为128,以中间值为 ...