[NOIp2016提高组]愤怒的小鸟
题目大意:
平面直角坐标系的第一象限有n(n<=18)个点,你可以每次给出一个形如y=ax^2+bx的函数把经过这条函数的点消掉,问消掉所有的点至少要多少函数?
思路:
枚举每两个点对,可以唯一确定一条函数,再枚举第三个点,判断一下是否会经过这条函数。
状态压缩一下记录每条函数能消掉那些点。
然后就是一个简单的状压DP。
一开始由于把fabs打成了abs,样例都过不去,调了半个下午。
洛谷上随便A,UOJ上被Extra数据hack掉了,把eps从1e-7改成1e-10就A了。
#include<cmath>
#include<cstdio>
#include<cctype>
#include<algorithm>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
const int N=;
const double eps=1e-;
struct Point {
double x,y;
};
Point p[N];
int sit[N*N],s;
int f[<<N];
inline double pow(const double &x) {
return x*x;
}
int main() {
for(register int T=getint();T;T--) {
const int n=getint();getint();
for(register int i=;i<n;i++) {
scanf("%lf%lf",&p[i].x,&p[i].y);
}
for(register int i=;i<n;i++) {
sit[i]=<<i;
}
s=n;
for(register int i=;i<n;i++) {
for(register int j=i+;j<n;j++) {
const double x1=p[i].x,x2=p[j].x,y1=p[i].y,y2=p[j].y;
if(pow(x1)*x2==pow(x2)*x1) continue;
const double a=(x2*y1/x1-y2)/(x1-x2)/x2,b=((pow(x2)*y1/pow(x1)-y2)/(pow(x2)/x1-x2));
if(a>-eps) continue;
sit[s]=(<<i)|(<<j);
for(register int k=j+;k<n;k++) {
if(fabs(a*pow(p[k].x)+b*p[k].x-p[k].y)<eps) sit[s]|=<<k;
}
s++;
}
}
for(register int i=;i<(<<n);i++) {
f[i]=1e9;
}
for(register int i=;i<(<<n);i++) {
for(register int j=;j<s;j++) {
f[i|sit[j]]=std::min(f[i|sit[j]],f[i]+);
}
}
printf("%d\n",f[(<<n)-]);
}
return ;
}
[NOIp2016提高组]愤怒的小鸟的更多相关文章
- 【题解】NOIP2016提高组 复赛
[题解]NOIP2016提高组 复赛 传送门: 玩具谜题 \(\text{[P1563]}\) 天天爱跑步 \(\text{[P1600]}\) 换教室 \(\text{[P1850]}\) 组合数问 ...
- 【题解】NOIP2016 提高组 简要题解
[题解]NOIP2016 提高组 简要题解 玩具迷题(送分) 用异或实现 //@winlere #include<iostream> #include<cstdio> #inc ...
- NOIP2016提高组解题报告
NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合
- [日记&做题记录]-Noip2016提高组复赛 倒数十天
写这篇博客的时候有点激动 为了让自己不颓 还是写写日记 存存模板 Nov.8 2016 今天早上买了两个蛋挞 吃了一个 然后就做数论(前天晚上还是想放弃数论 但是昨天被数论虐了 woc noip模拟赛 ...
- 【NOIP2016提高组】 Day2 T3 愤怒的小鸟
题目传送门:https://www.luogu.org/problemnew/show/P2831 说个题外话:NOIP2014也有一道题叫做愤怒的小鸟. 这题自测时算错了eps,导致被卡了精度,从1 ...
- 【NOIP2016提高组】愤怒的小鸟
https://www.luogu.org/problem/show?pid=2831 BFS 看到N这么小就可以想到搜索,求最少步数显然应该用BFS. 在这题中过两猪可以唯一确定一条抛物线,每一步可 ...
- NOIP2016提高组复赛C 愤怒的小鸟
题目链接:http://uoj.ac/problem/265 题目大意: 太长了不想概括... 分析: 状压DP的模板题,把所有可能的抛物线用二进制表示,然后暴力枚举所有组合,详情见代码内注释 代码如 ...
- 【NOIP2016提高组day2】愤怒的小鸟
分析 Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0, 0) 处,每次Kiana可以用它向第一象限发射一只红色的小鸟, 小鸟们的飞行轨迹均 ...
- 【noip2016提高组day2T3】【愤怒的小鸟】状压dp转移时的集合包含
(上不了p站我要死了,图来自百度,侵权度娘背锅) 调死我了... 标题就说明了,死在了集合包含上.因为这道题与其他的状压题不同,其他的题基本上都是要求集合不重合,而这道题完全是可以的. 废话不多说,先 ...
随机推荐
- vue手势解决方案
1.需求 因为项目中要做一个可以移动.旋转和放缩具有合成图片的功能,例如: 剑可以随意移动,然后把位移.旋转角度和放缩值传给后台进行合成. 2.解决方案 网上搜到手势插件AlloyFinger,htt ...
- hdu 1003 Max Sum (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) ...
- setTimeOut、setInterval与clearInterval函数
1.setTimeOut 在指定毫秒数后调用函数或计算表达式,函数或计算表达式只执行一次 setTimeout("alert('5 seconds!')",5000) 2.setI ...
- 使用PTGui软件将全景图变成鱼眼图
把全景图变成鱼眼图.方法一部分是自己研究的,一部分是参考学妹街景合成鱼眼照片的方法. 需要使用的软件是PTGui.是个收费软件,价格还不便宜.操作一下,安装完后就可以开始合成鱼眼图了. 加载图像 打开 ...
- 网络知识===wireshark抓包,三次握手分析
TCP需要三次握手建立连接: 网上的三次握手讲解的太复杂抽象,尝试着使用wireshark抓包分析,得到如下数据: 整个过程分析如下: step1 client给server发送:[SYN] Seq ...
- 转 白话解析:一致性哈希算法 consistent hashing
摘要: 本文首先以一个经典的分布式缓存的应用场景为铺垫,在了解了这个应用场景之后,生动而又不失风趣地介绍了一致性哈希算法,同时也明确给出了一致性哈希算法的优点.存在的问题及其解决办法. 声明与致谢: ...
- Sqlserver获取所有数据库名,表信息,字段信息,主键信息,以及表结构等。
--获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ( 'master', 'model', 'msdb', 'te ...
- 2017多校第6场 HDU 6105 Gameia 博弈
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6105 题意:Alice和Bob玩一个游戏,喷漆!现在有一棵树上边的节点最开始都没有被染色.游戏规则是: ...
- Lambda 表达式 in java 8
Lambda 表达式 in Java 8 Lambda表达式是java 8 新增的特性 Lambda表达式主要作用:支持将代码块作为方法参数,允许使用更简洁的代码创建函数式接口的实例,是匿名内部类的一 ...
- caffe Python API 之 数据输入层(Data,ImageData,HDF5Data)
import sys sys.path.append('/projects/caffe-ssd/python') import caffe4 net = caffe.NetSpec() 一.Image ...