某谷链接
题意:选最少的抛物线来覆盖所有点。
注意到a<0,所以我们可以枚举两个点来构成一条抛物线,让后记这两个点构成的抛物线为 cov[i][j]cov[i][j]cov[i][j],让后他存的是这个抛物线能覆盖到的点的集合,把它存成一个二进制。当然可能存在点与其他任何点都够不成抛物线,这样的点特殊记录下就好啦。两个点连线与x轴垂直的时候这两个点也不能构成抛物线,特判一下即可。
现在我们预处理出来了covcovcov数组,转移方程为f[i∣cov[x][j]]=min(f[i∣cov[x][j]],f[i]+1)f[i|cov[x][j]]=min(f[i|cov[x][j]],f[i]+1)f[i∣cov[x][j]]=min(f[i∣cov[x][j]],f[i]+1)
从小到大依次枚举状态i即可。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=21,M=1<<N,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
int f[M],cov[N][N];
struct Node
{double x,y;
}p[N];int sgn(double x)
{if(abs(x)<eps) return 0;if(x<0) return -1;else return 1;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);int _; scanf("%d",&_);while(_--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%lf%lf",&p[i].x,&p[i].y);memset(cov,0,sizeof(cov));for(int i=1;i<=n;i++){cov[i][i]=1<<(i-1);for(int j=1;j<=n;j++){double x1=p[i].x,y1=p[i].y;double x2=p[j].x,y2=p[j].y;if(!sgn(x1-x2)) continue;double a=(y1/x1-y2/x2)/(x1-x2);double b=y1/x1-a*x1;if(sgn(a)>=0) continue;for(int k=1;k<=n;k++){double x=p[k].x,y=p[k].y;if(!sgn(a*x*x+b*x-y)) cov[i][j]+=(1<<(k-1));}}}memset(f,0x3f,sizeof(f));f[0]=0;for(int i=0;i+1<1<<n;i++){int id=0;for(int j=1;j<=n;j++) if(!(i>>(j-1)&1)) { id=j; break; }for(int j=1;j<=n;j++) f[i|cov[id][j]]=min(f[i|cov[id][j]],f[i]+1);}printf("%d\n",f[(1<<n)-1]);}return 0;
}
/**/

P2831 [NOIP2016 提高组] 愤怒的小鸟 状压dp相关推荐

  1. [NOIP2016 提高组] 愤怒的小鸟

    [NOIP2016 提高组] 愤怒的小鸟 题意: 有n只猪,给出猪的坐标(xi,yi),问最少用几个形如 y=ax^2+bx 的曲线可以保证所有猪在曲线上,满足a<0,a,b为实数 n<= ...

  2. 状压dp个人刷题记录

    目录 一.普通型 蒙德里安的梦想 题意: 思路: code: #2153. 「SCOI2005」互不侵犯 题意: 思路: code: P1879 [USACO06NOV]Corn Fields G 题 ...

  3. [ NOIP提高组 2016]愤怒的小鸟(暴搜 + 状压DP)// [SNOI2017]一个简单的询问(莫队)

    一次性写两道题 T1:一个简单的询问 题目 题解 代码实现 T2:愤怒的小鸟 题目 暴搜题解 暴搜代码实现 状压DP题解 状压DP代码实现 T1:一个简单的询问 题目 给你一个长度为 N 的序列 ai ...

  4. [NOIP2016]愤怒的小鸟(状压DP)

    [NOIP2016]愤怒的小鸟(状压DP) 题目描述 输入输出格式 输入格式: 第一行包含一个正整数 T,表示游戏的关卡总数. 下面依次输入这 T个关卡的信息.每个关卡第一行包含两个非负整数 n,m, ...

  5. 2021.8.11【提高B组模拟3】T1 积木(乱糊暴搜)(正解:状压dp)

    积木 题目大意 输入样例 3 8 7 6 3 9 4 1 10 5 输出样例 18 题目数据 解题思路 暴搜就没什么好讲的了 原本以为只有40,AC了就离谱 (数据真水) 正文:状压dp 前提:我这个 ...

  6. 刷题周记(九)——#状压DP:最短Hamilton路径、小国王(互不侵犯)、玉米田(Corn Fields G)、愤怒的小鸟、吃奶酪、炮兵阵地、宝藏 #区间DP:清空字符串#DP:关灯问题II

    文章目录 --2020年12月20日(周日)------------------ 状压DP 一.最短Hamilton路径(模板题) 二.玉米田(P1879 [USACO06NOV]Corn Field ...

  7. [蓝桥杯][算法提高VIP]Sharing Chocolate(状压dp记忆化搜索)

    题目描述 每天,巧克力在它的许多形式上被全世界数百万人分享.它是一个真正普遍的糖果,实际上在世界上每个国家都能得到. 你发现唯一比吃巧克力更好的事情是把它分享给朋友.不幸的是,你的朋友非常挑剔,有着不 ...

  8. 【vijos P1914】【codevs 3904】[NOIP2014 普及组T4]子矩阵(dfs+状压dp)

    P1914子矩阵 Accepted 标签:NOIP普及组2014[显示标签] 描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与 列的相对顺序)被称为原矩阵 ...

  9. 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc

    糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) xzc 2019/4/5 试题 I: 糖果 时间限制: 1.0s 内存限制: 256.0MB 本题总分:25分 [问题描述]    ...

最新文章

  1. 拉勾网《32个Java面试必考点》学习笔记之一------Java职业发展路径
  2. android6.0源码分析之AMS服务源码分析
  3. 字王谈M1字形与个人云字库
  4. 判断一个数组中的值是否在另一个数组中
  5. 把Springboot项目部署到服务器上和结束运行
  6. [Winodows Phone 7控件详解]Silverlight toolkit for Windows Phone 7.1控件-5
  7. 事件循环中的宏任务和微任务执行顺序
  8. 接口测试自动化框架搭建
  9. 翻牌游戏如何打乱牌面java_如何游戏4Bet底池?
  10. 在移动通信中如何测试5G网络?
  11. 汽车金融-融资租赁模式信息化系统建设方案
  12. CAD图纸打印时如何去掉图纸边框的白边?
  13. Android 最全 BATJ 大厂面试题整理!
  14. 治愈系课程教材 第四课
  15. 自动驾驶研究生就业如何,自动驾驶的研究方向
  16. 2021年软考信息安全工程师下午真题(考生回忆版)
  17. 美通企业周刊 | 爱立信已获100份5G商用合同;北京广东世界五百强数量领跑全国​...
  18. java数组标准差_如何使用JAVA计算标准差
  19. vue使用d3数据可视化(柱状图、饼图、折线图 带坐标轴)
  20. SharePoint On Premise 数据迁移到 SharePoint Online的几点考虑

热门文章

  1. 下载matlab安装包太慢_MATLAB 2020a商业数学中文版软件下载安装教程
  2. 如果你没有时间读书,至少要保留这个习惯
  3. 史上超强的学科碰撞,有生之年必看系列!
  4. 4-8岁那些最难的数学概念,美国老师用一套绘本让孩子秒懂
  5. mysql映射超_Hibernate的映射类型 hibernate mysql映射类型
  6. 会计电算化的重要物质基础计算机和,湖北工业大学工程技术学院会计电算化管理办法...
  7. oracle中触发器只能用于表吗,Oracle触发器的分类和使用
  8. vue 一个页面有点请求需要同时发送_前端性能优化,这些你都需要知道
  9. json 格式化工具_如何在命令行中优雅地处理JSON
  10. 架构师讲解Java中websocket的应用