「NOIP2016」愤怒的小鸟
传送门
Luogu
解题思路
首先这个数据范围十分之小啊。
我们考虑预处理出所有可以带来贡献的抛物线 三点确定一条抛物线都会噻
然后把每条抛物线可以覆盖的点状压起来,然后状压DP随便转移就好了。
有一个小小的优化就是每次枚举打掉哪两头猪的时候可以钦定打掉编号最小的那头。
细节注意事项
- 咕咕咕。
参考代码
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <cmath>
#include <ctime>
#define rg register
using namespace std;
template < typename T > inline void read(T& s) {
s = 0; int f = 0; char c = getchar();
while (!isdigit(c)) f |= c == '-', c = getchar();
while (isdigit(c)) s = s * 10 + (c ^ 48), c = getchar();
s = f ? -s : s;
}
const double eps = 1e-7;
int n, m; double x[20], y[20];
int t[20][20], dp[1 << 19];
inline void solve() {
read(n), read(m);
for (rg int i = 1; i <= n; ++i)
scanf("%lf%lf", x + i, y + i);
for (rg int i = 1; i <= n; ++i) {
for (rg int j = i + 1; j <= n; ++j) {
t[i][j] = 0;
double x1 = x[i], y1 = y[i], x2 = x[j], y2 = y[j];
double a = (y1 * x2 - y2 * x1) / (x1 * x2 * (x1 - x2));
double b = (y1 * x2 * x2 - y2 * x1 * x1) / (x1 * x2 * (x2 - x1));
if (a < -eps) {
for (rg int k = 1; k <= n; ++k)
if (fabs(a * x[k] * x[k] + b * x[k] - y[k]) <= eps)
t[i][j] |= 1 << (k - 1);
}
}
}
memset(dp, 0x3f, sizeof dp), dp[0] = 0;
for (rg int s = 0; s < 1 << n; ++s) {
int i;
for (i = 1; s & 1 << (i - 1); ++i);
dp[s | 1 << (i - 1)] = min(dp[s | 1 << (i - 1)], dp[s] + 1);
for (rg int j = i + 1; j <= n; ++j)
dp[s | t[i][j]] = min(dp[s | t[i][j]], dp[s] + 1);
}
printf("%d\n", dp[(1 << n) - 1]);
}
int main() {
#ifndef ONLINE_JUDGE
freopen("in.in", "r", stdin);
freopen("out.out", "w", stdout);
#endif
int T; read(T);
while (T--) solve();
return 0;
}
完结撒花 \(qwq\)
「NOIP2016」愤怒的小鸟的更多相关文章
- [LOJ] #2363「NOIP2016」愤怒的小鸟
精度卡了一个点,别人自带大常数,我自带大浮点误差qwq. 听了好几遍,一直没动手写一写. f[S]表示S集合中的猪被打死的最少抛物线数,转移时考虑枚举两个点,最低位的0为第一个点,枚举第二个点,构造一 ...
- LOJ #2359. 「NOIP2016」天天爱跑步(倍增+线段树合并)
题意 LOJ #2359. 「NOIP2016」天天爱跑步 题解 考虑把一个玩家的路径 \((x, y)\) 拆成两条,一条是 \(x\) 到 \(lca\) ( \(x, y\) 最近公共祖先) 的 ...
- 「NOIP2016」天天爱跑步 题解
(声明:图片来源于网络) 「NOIP2016」天天爱跑步 题解 题目TP门 题目 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ...
- LOJ2362. 「NOIP2016」蚯蚓【单调队列】
LINK 思路 良心来说这题还挺思维的 我没看题解也不知道要这样维护 把每次斩断的点分别放进两个队列里面 因为要维护增长,所以可以让新进队的节点来一个负增长? 是不是就好了? 然后很容易发现因为在原始 ...
- LOJ2360. 「NOIP2016」换教室【概率DP】【Floyed】【傻逼题】
LINK 思路 先floyed出两点最短路 然后就可以直接\(dp_{i,j,0/1}\)表示前i节课选择换j节,换不换当前这一节的最小贡献 直接可以枚举上一次决策的状态计算概率进行统计就可以了 我变 ...
- LOJ2359. 「NOIP2016」天天爱跑步【树上差分】
LINK 思路 首先发现如果对于一个节点,假设一个节点需要统计从字数内来的贡献 需要满足\(dep_u - dep_s = w_u\) 这个条件其实可以转化成\(dep_u - w_u = dep_s ...
- 「NOIP2016」「P1850」 换教室(期望dp
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤ ...
- [LOJ] #2360. 「NOIP2016」换教室
期望DP #include<iostream> #include<cstring> #include<cstdio> #include<cctype> ...
- 「NOIP2016」换教室
传送门 Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 $ 2n $ 节课程安排在 $ n $ 个时间段上.在第 $ i ...
随机推荐
- POJ3264 Balances Lineup
建两颗线段树分别存最大和最小值,模板题~ #include<cstdio> #include<algorithm> #include<cstring> using ...
- 整合SSM
SSM整合:Spring - SpringMVC - MyBatis 1.Spring - MyBatis : 需要整合:将MyBatis的SqlSessionFactory 交给Spr ...
- Card Game for Three
Alice, Bob and Charlie are playing Card Game for Three, as below: At first, each of the three player ...
- stackADT
stack.h #ifndef STACK_H_INCLUDED #define STACK_H_INCLUDED #include <stdbool.h> typedef struct ...
- 吴裕雄 PYTHON 神经网络——TENSORFLOW 正则化
import tensorflow as tf import matplotlib.pyplot as plt import numpy as np data = [] label = [] np.r ...
- ANSYS 瞬态热分析---零件在水中冷却
目录 1. 案例 2. APDL分析 1. 案例 一个温度为300℃的铜环和一个温度为200℃的铁环,放置到22℃的水中进行淬火.水桶为铁质的圆形.分析中忽略水的流动. 材料参数 热性能 铜 铁 水 ...
- 一个简单insert 语句执行 40ms 原因剖析
背景:一个简单的带有主键的insert 语句,居然要 40ms ,开发受不了,要求降低 因此我们要关注的的 数据从插入落地的IO 中间都干了什么 一.MySQL的文件 首先简单介绍一下MySQL的数据 ...
- Es查询结果集默认是10000,更新设置
Es查询结果集默认是10000,结果集大小是int,最大为21亿左右 PUT _all/_settings?preserve_existing=true { "index.max_resul ...
- 02.当构造参数过多时使用builder模式
前言 <Effective Java>中文第三版,是一本关于Java基础的书,这本书不止一次有人推荐我看.其中包括我很喜欢的博客园博主五月的仓颉,他曾在自己的博文<给Java程序猿们 ...
- SpringBoot+JWT+SpringSecurity+MybatisPlus实现Restful鉴权脚手架
若图片查看异常,请前往掘金查看:https://juejin.im/post/5d1dee34e51d4577790c1cf4 前言 JWT(json web token)的无状态鉴权方式,越来越流行 ...