【NOIP2016提高组】 Day2 T3 愤怒的小鸟
题目传送门:https://www.luogu.org/problemnew/show/P2831
说个题外话:NOIP2014也有一道题叫做愤怒的小鸟。
这题自测时算错了eps,导致被卡了精度,从100卡剩80
由于此题n的范围特别小,所以考虑使用状压dp。
我们用一个整数i来描述状态,i的第k个bit表示第k只鸟是否被消灭,f[i]表示在这一状态下所需鸟的最小数量。
由于不在同一直线上的三个点确定一条抛物线,所以我们可以预处理出所有的可行抛物线,并确定在该抛物线上的鸟的编号(这一步对精度要求极高)。同时考虑到两只鸟与原点存在三点共线的情况,故在抛物线方案中写入单独消灭指定一只小鸟的情况。故消灭方案之多有(n*(n-1)/2+n)种。
然后就愉快地进行转移啦~ 顺便吐槽下m没有卵用
时间复杂度为O(n^2*2^n)。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define M 18
#define eps (1e-10)
using namespace std;
int f[<<M]={};
int n;
struct pt{
int x,y; pt(){x=y=;}
pt(double xx,double yy){x=xx; y=yy;}
}a[M];
struct pao{
double a,b; pao(){a=b=;}
pao(pt A,pt B){
double x0=A.x,x1=B.x,y0=A.y,y1=B.y;
a=(y1-y0*x1/x0)/(x1*x1-x0*x1);
b=y0/x0-a*x0;
}
bool check(){
if(a>-eps) return ;
return ;
}
double get(double x){
double ans=a*x*x+b*x;
return ans;
}
};
int fly[M*M]={},use=;
bool b[<<M]={};
int Main(){
memset(f,,sizeof(f));
memset(a,,sizeof(a));
memset(fly,,sizeof(fly));
memset(b,,sizeof(b));
use=; int m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
double x,y; scanf("%lf%lf",&x,&y);
x=x*+0.3; y=y*+0.3;
a[i]=pt(x,y);
}
for(int i=;i<n;i++) fly[++use]=<<i;
for(int i=;i<=n;i++){
for(int j=;j<i;j++) if(i!=j){
if(a[i].x==a[j].x) continue;
pao A=pao(a[i],a[j]);
if(!A.check()) continue;
int x=;
for(int k=;k<n;k++){
double p=A.get(a[k+].x);
if(fabs(p-a[k+].y)<=eps)
x=x|(<<k);
}
if(!b[x])
fly[++use]=x,b[x]=;
}
}
int end=<<n; f[]=;
for(int i=;i<end;i++){
for(int j=;j<=use;j++)
f[i|fly[j]]=min(f[i|fly[j]],f[i]+);
}
printf("%d\n",f[end-]);
} int main(){
freopen("angrybirds.in","r",stdin);
freopen("angrybirds.out","w",stdout);
int cas; scanf("%d",&cas);
while(cas--) Main();
return ;
}
【NOIP2016提高组】 Day2 T3 愤怒的小鸟的更多相关文章
- 【NOIP2016提高组day2】愤怒的小鸟
分析 Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0, 0) 处,每次Kiana可以用它向第一象限发射一只红色的小鸟, 小鸟们的飞行轨迹均 ...
- Noip2016 提高组 Day2 T1 组合数问题
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- 【NOIP2016提高组day2】蚯蚓
那么我们开三个不上升队列, 第一个记录原来的蚯蚓, 第二个记录乘以p的蚯蚓 第三个记录乘以(1-p)的蚯蚓, 在记录每条就要入队列的时间,就可以求出增加的长度 每次比较三个队列的队首,取最大的值x的切 ...
- NOIP2016提高组复赛C 愤怒的小鸟
题目链接:http://uoj.ac/problem/265 题目大意: 太长了不想概括... 分析: 状压DP的模板题,把所有可能的抛物线用二进制表示,然后暴力枚举所有组合,详情见代码内注释 代码如 ...
- 一道搜索题【2013 noip提高组 DAY2 t3】华容道
这篇不多说,具体的解释都在程序里 题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果 ...
- 2012Noip提高组Day2 T3 疫情控制
题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到 ...
- 【题解】NOIP2016提高组 复赛
[题解]NOIP2016提高组 复赛 传送门: 玩具谜题 \(\text{[P1563]}\) 天天爱跑步 \(\text{[P1600]}\) 换教室 \(\text{[P1850]}\) 组合数问 ...
- 18/9/16牛客网提高组Day2
牛客网提高组Day2 T1 方差 第一眼看就知道要打暴力啊,然而并没有想到去化简式子... 可能因为昨晚没睡好,今天上午困死 导致暴力打了一个半小时,还不对... #include <algor ...
- 【题解】NOIP2016 提高组 简要题解
[题解]NOIP2016 提高组 简要题解 玩具迷题(送分) 用异或实现 //@winlere #include<iostream> #include<cstdio> #inc ...
- NOIP2016提高组解题报告
NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合
随机推荐
- 2018.09.21 atcoder An Invisible Hand(贪心)
传送门 简单贪心啊. 这题显然跟t并没有关系,取差量最大的几组买入卖出就行了. 于是我们统计一下有几组差量是最大的就行了. 代码: #include<bits/stdc++.h> #def ...
- 2018.08.30 NOIP模拟 kfib(矩阵快速幂+exgcd)
[输入] 一行两个整数 n P [输出] 从小到大输出可能的 k,若不存在,输出 None [样例输入 1] 5 5 [样例输出] 2 [样例解释] f[0] = 2 f[1] = 2 f[2] = ...
- 2018.08.18 NOIP模拟 game(数位dp)
Game 题目背景 SOURCE:NOIP2015-SHY4 题目描述 Alice 和 Bob 正在玩一个游戏,两个人从 1 轮流开始报数,如果遇到 7 的倍数或者遇到的这个数的十进制表示中含 7 , ...
- 2018.08.16 POJ1183反正切函数的应用(简单数学)
传送门 代数变形一波. 显然有b,c>a. 那么这样的话可以令b=a+m,c=a+n. 又有a=(bc-1)/(b+c). 带入展开可知m*n=a*a+1. 要让m+n最小只需让m最大,这个结论 ...
- 37 The Benefits of Cutting Salt 减少盐分摄取量的益处
The Benefits of Cutting Salt 减少盐分摄取量的益处 ①Just when you had figured out how to manage fat in your die ...
- 转一个Visual Stuido 快捷键
http://www.shortcutworld.com/en/win/Visual-Studio_2010.html 快捷键分类很详细.
- spss-非参数检验-K多个独立样本检验( Kruskal-Wallis检验)案例解析
今天和大家一起探讨和分下一下SPSS-非参数检验--K个独立样本检验 ( Kruskal-Wallis检验). 还是以SPSS教程为例: 假设:HO: 不同地区的儿童,身高分布是相同的 H1: 不 ...
- [翻译]Spring MVC RESTFul Web Service CRUD 例子
Spring MVC RESTFul Web Service CRUD 例子 本文主要翻译自:http://memorynotfound.com/spring-mvc-restful-web-serv ...
- Paul Simon -- Duncan
Paul Simon -- Duncan (London,January 1972) Couple in the next roomBound to win a prizeTheyve been go ...
- <mvc:annotation-driven />到底帮我们做了啥
一句 <mvc:annotation-driven />实际做了以下工作:(不包括添加自己定义的拦截器) 我们了解这些之后,对Spring3 MVC的控制力就更强大了,想改哪就改哪里. s ...