题目链接

题目链接

题解

数据范围显然状压/爆搜。

考虑\(f[S]\)表示二进制下已打了的猪的集合。

可以枚举\(S\)的子集\(S_1\),判定\(S\)中\(S_1\)的补集\(S_2\)是否合法。

判定可以通过待定系数法做到\(O(n)\)判定。若补集合法,则\(f[S]=\min\{f[S_1]+1 \}\)。

复杂度是\(O(Tn3^n)\)。这样能\(70\)分。

考虑如何优化。因为\(n\)很小,所以可以\(O(n^3)\)预处理出\(g_{i,j}\)表示经过\(i,j\)两点的二次函数可达的点集。那么转移的时候枚举二次函数(通过枚举点\(i\)和点\(j\)),转移方程\(f[S|g_{i,j}]=\min\{f[S]+1\}\)。

那么复杂度降到\(O(Tn^22^n)\)。已经可以通过本题了。

唐神的\(blog\)里面还有个优化。

一个结论:每个状态\(S\)用于转移的二次函数,一定经过该状态中不包含的第一个点\(x\)。因为最后的目标是选所有的点,这个点不选,在最后的最优方案中也一定会被其他点选到,而前面已经处理出了\(g_{i,j}\),可达点集已经都处理出来了。所以只用这个点\(x\)转移是合法的。

如果预处理出来每个状态\(S\)所对应的\(x\)的话复杂度就是\(O(Tn2^n)\)的。如果不处理的话会慢一点但也不会太多。

#include <bits/stdc++.h>
using namespace std; const int N = 20;
const int inf = 0x3f3f3f3f;
const double eps = 1e-10;
int n, m, f[(1 << 18) + 5], T, g[N][N];
double a[N], b[N]; int main() {
scanf("%d", &T);
while(T--) {
scanf("%d%d", &n, &m);
for(int i = 0; i < n; ++i) scanf("%lf%lf", &a[i], &b[i]);
memset(g, 0, sizeof(g)); memset(f, 0x3f, sizeof(f)); f[0] = 0;
for(int i = 0; i < n; ++i) {
for(int j = i + 1; j < n; ++j) {
if(a[i] == a[j]) continue;
double A = (b[i] - b[j] * a[i] / a[j]) / (a[i] * a[i] - a[i] * a[j]);
double B = (b[i] - A * a[i] * a[i]) / a[i];
if(A >= 0) continue;
for(int k = 0; k < n; ++k)
if(fabs(b[k] - (A * a[k] * a[k] + B * a[k])) <= eps) g[i][j] |= 1 << k;
}
}
for(int S = 0; S < 1 << n; ++S) {
for(int i = 0; i < n; ++i) {
f[S | (1 << i)] = min(f[S | (1 << i)], f[S] + 1);
if(!(S & (1 << i))) {
for(int j = i + 1; j < n; ++j)
f[S | g[i][j]] = min(f[S | g[i][j]], f[S] + 1);
break;
}
}
}
printf("%d\n", f[(1 << n) - 1]);
}
}

LGOJP2831 愤怒的小鸟的更多相关文章

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

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

  2. 基于html5实现的愤怒的小鸟网页游戏

    之前给大家分享一款基于html5 canvas和js实现的水果忍者网页版,今天给大家分享一款基于html5实现的愤怒的小鸟网页游戏.这款游戏适用浏览器:360.FireFox.Chrome.Safar ...

  3. [luogu2831][noip d2t3]愤怒的小鸟_状压dp

    愤怒的小鸟 noip-d2t3 luogu-2831 题目大意:给你n个点,问最少需要多少条经过原点的抛物线将其覆盖. 注释:1<=点数<=18,1<=数据组数<=30.且规定 ...

  4. 洛谷P2831 愤怒的小鸟 + 篮球比赛1 2

    这三道题一起做,有一点心得吧. 愤怒的小鸟,一眼看上去是爆搜,但是实现起来有困难(我打了0分出来). 还有一种解法是状压DP. 抛物线一共只有那么多条,我们枚举抛物线(枚举两个点),这样就能够预处理出 ...

  5. Unity3D笔记 愤怒的小鸟<二> 实现Play界面

    创建Play界面.能个把各个图片组合成一个场景,场景组成后背景能够不停的滚动,当鼠标单击时显示图片手型鼠标 一.GUI Texture 1.创建背景.地面.树木.草 ,这里注意Z轴的排序,一层一层则第 ...

  6. Unity3D笔记 愤怒的小鸟<一>场景切换

    新建3个场景,场景1 Start 十秒后自动切换到场景2 Splash,场景2在二秒后自动切换到场景3 Selection 一.场景一Start 二.场景2 Splash 三.场景3 Selectio ...

  7. Unity3D游戏-愤怒的小鸟游戏源码和教程(二)

    Unity愤怒的小鸟游戏教程(二) 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) AngryEva游戏效果 ...

  8. Unity3D游戏-愤怒的小鸟游戏源码和教程(一)

    Unity愤怒的小鸟游戏教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) AngryEva游戏效果: 1 ...

  9. 【NOIP2016提高组】 Day2 T3 愤怒的小鸟

    题目传送门:https://www.luogu.org/problemnew/show/P2831 说个题外话:NOIP2014也有一道题叫做愤怒的小鸟. 这题自测时算错了eps,导致被卡了精度,从1 ...

随机推荐

  1. laravel Carbon函数

    原文地址:https://blog.csdn.net/lbwo001/article/details/53063867 carbon官方网站:https://carbon.nesbot.com/doc ...

  2. 说一说ORACLE的监听

    1.讲在前面 本文档仅适用于如下范围:Oracle以dedicate (专有)连接模式通过TCP/IP协议连接的场景. 2.监听的作用 在谈监听的作用之前,有必要先看看监听的工作原理图: 客户端进程发 ...

  3. php HTTP协议

    HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol) 最常见B/s架构中,使用,浏览器端与服务器端数据交互协议. 协议:约定好的一套语法规则. 规定:请求数 ...

  4. AOP+Token防止表单重复提交

    表单重复提交: 由于用户误操作,多次点击表单提交按钮 由于网速等原因造成页面卡顿,用户重复刷新提交页面 避免表单重复提交的方式: 1.页面上的按钮做防重复点击操作 2.在数据库中可以做唯一约束 3.利 ...

  5. xshell和Xftp连接虚拟机

    首先连接虚拟机之前,先配置自己的IP地址,见博客https://www.cnblogs.com/xuzhaoyang/p/11264573.html xshell和Xftp下载请到官网http://w ...

  6. 转发:for /f命令之—Delims和Tokens用法&总结

    在For命令语踞饽参数F中,最难理解的就是Delims和Tokens两个选项,本文简单的做一个比较和总拮.“For /f”常用来解析文本,读取字符串.分工上,delims负责切分字符串,而tokens ...

  7. js中引用类型Math一些常用的方法和属性

    js中有一种引用类型叫做Math,和Global属于单体内置对象,里面有一些非常常用的数学方法和数学常量 常用数学常量 Math.E; // 自然对数的底数Math.LN10 10的自然对数 Math ...

  8. JDK并发的类

    Future : 提前完成任务 原理:wait(),notify()的使用. 线程之间的通信 : CountDownLatch :线程计数 CyclicBarrier :循环计数 Semaphore ...

  9. Form' threw an exception of type 'System.InvalidOperationException'

    环境:VS2017 NetCore 2.2 Razor Layui 在处理异步请求是遇到"((Microsoft.AspNetCore.Http.Internal.DefaultHttpRe ...

  10. 湖南师范大学计算机基础课网络教学平台 版本 V2.0(2017.9.18)

    湖南师范大学计算机基础课网络教学平台 版本 V2.0(2017.9.18) 开发环境: 开发工具:VS2013,数据库:Sqlserver2012 开发语言:Asp.net MVC5 ,界面UI:jq ...