传送门

感觉这题不是很难,但是很恶心。

说一下几点。

1.预处理出来每两个点所构成的抛物线能消除的猪的集合。

2.如果两个点横坐标相同,则不能构成抛物线

3.a >= 0 continue

4.卡精度

5.卡常数(本蒟蒻巨菜,2nn2做法)

#include <cstdio>
#include <cstring>
#define N 19
#define abs(x) ((x) < 0 ? -(x) : (x))
#define min(x, y) ((x) < (y) ? (x) : (y)) int T, n, m, S;
int f[1 << N], s[N][N];
double X[N], Y[N], a, b; inline bool pd(double x, double y)
{
return abs(x - y) < (1e-6);
} int main()
{
int i, j, k, l;
scanf("%d", &T);
while(T--)
{
scanf("%d %d", &n, &m);
memset(f, 127 / 3, sizeof(f));
for(i = 1; i <= n; i++) scanf("%lf %lf", &X[i], &Y[i]);
memset(s, 0, sizeof(s));
for(i = 1; i <= n; i++)
for(j = i + 1; j <= n; j++)
{
if(pd(X[i], X[j])) continue;
a = (Y[j] / X[j] - Y[i] / X[i]) / (X[j] - X[i]);
b = Y[i] / X[i] - a * X[i];
if(a >= 0) continue;
s[i][j] |= (1 << i - 1) | (1 << j - 1);
for(k = 1; k <= n; k++)
if(k != i && k != j && pd(Y[k], a * X[k] * X[k] + b * X[k]))
s[i][j] |= 1 << k - 1;
}
f[0] = 0;
for(i = 0; i < (1 << n); i++)
for(j = 1; j <= n; j++)
if(!(i & (1 << j - 1)))
{
f[i | (1 << j - 1)] = min(f[i | (1 << j - 1)], f[i] + 1);
for(k = j + 1; k <= n; k++)
if((i & (1 << k - 1)) && s[j][k])
{
S = i ^ (i & s[j][k]);
f[i | (1 << j - 1)] = min(f[i | (1 << j - 1)], f[S] + 1);
}
}
printf("%d\n", f[(1 << n) - 1]);
}
return 0;
}

  

[luoguP2831] 愤怒的小鸟(状压DP)的更多相关文章

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

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

  2. [Luogu P2831] 愤怒的小鸟 (状压DP)

    题面: 传送门:https://www.luogu.org/problemnew/show/P2831 Solution 首先,我们可以先康一康题目的数据范围:n<=18,应该是状压或者是搜索. ...

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

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

  4. 洛谷P2831 愤怒的小鸟(状压dp)

    题意 题目链接 Sol 这题....我样例没过就A了??..算了,就当是样例卡精度吧.. 直接状压dp一下,\(f[sta]\)表示干掉\(sta\)这个集合里面的鸟的最小操作数 转移的时候判断一下一 ...

  5. [noip2016]愤怒的小鸟<状压dp+暴搜>

    题目链接:https://vijos.org/p/2008 现在回过头去看去年的考试题,发现都不是太难,至少每道题都有头绪了... 这道题的数据范围是18,这么小,直接暴力呗,跑个暴搜就完了,时间也就 ...

  6. NOIP2016Day2T3愤怒的小鸟(状压dp) O(2^n*n^2)再优化

    看这范围都知道是状压吧... 题目大意就不说了嘿嘿嘿 网上流传的写法复杂度大都是O(2^n*n^2),这个复杂度虽然官方数据可以过,但是在洛谷上会TLE[百度搜出来前几个博客的代码交上去都TLE了], ...

  7. 【题解】P2831 愤怒的小鸟 - 状压dp

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

  8. P2831 愤怒的小鸟 状压dp

    这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了. 题干: 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上 ...

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

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

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

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

随机推荐

  1. servlet基础概念

    一.servlet是什么? 运行在Web服务器上(如:tomcat),作为浏览器请求与数据库或其他应用程序之间的中间层 二.servlet主要任务: 1.读取浏览器发送的显式数据(如:html表单)隐 ...

  2. html引入另一个html

    在写页面的时候,有些东西是一样的,比如头部的导航或者尾部的标注.所以复用的东西可以写到一个文件中,之后再引入,angularjs或是jsp中都有很好的标签引入,而html没有,但是可以借助一些方式进行 ...

  3. [转].NET MVC 分页以及增删查改

    本文转自:http://blog.csdn.net/sust2012/article/details/30761867 . 数据库操作,DAL 层: using System; using Syste ...

  4. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第六天(非原创)

    文章大纲 一.课程介绍二.今日内容简单介绍三.Httpclient介绍与实战四.项目源码与资料下载五.参考文章   一.课程介绍 一共14天课程(1)第一天:电商行业的背景.淘淘商城的介绍.搭建项目工 ...

  5. CSS3常用属性浏览器兼容前缀

    1.检测网站https://gsnedders.html5.org/outliner/ 2.查询是否支持前缀http://caniuse.com 3.border-radius\box-shadow\ ...

  6. gulp自动化构建工具使用

    gulpfile.js: var gulp = require("gulp"); var imagemin = require("gulp-imagemin") ...

  7. DROP TABLE - 删除一个表

    SYNOPSIS DROP TABLE name [, ...] [ CASCADE | RESTRICT ] DESCRIPTION 描述 DROP TABLE 从数据库中删除表或视图. 只有其所有 ...

  8. OpenCV2:第十章 视频操作

    一.简介 OpenCV提供了专门操作视频的接口类VideoCapture 二.构造VideoCapture类 VideoCapture::VideoCapture() VideoCapture::Vi ...

  9. css内容补充之其它

    1.overflow 当图片大小,超出div的大小时,可以指定overflow值为auto(带滚动条).hidden(隐藏,只显示一块): hover 当鼠标移动到当前标签上时,以下css属性才生效:

  10. docker run之后状态总是Exited

    add -it docker run -it -name test -d nginx:latest /bin/bash