题目链接

题目链接

题解

数据范围显然状压/爆搜。
考虑\(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]);}
}

转载于:https://www.cnblogs.com/henry-1202/p/11326488.html

LGOJP2831 愤怒的小鸟相关推荐

  1. 你当年没玩好的《愤怒的小鸟》,AI现在也犯难了

    (图片源自百度百科) 作者 | Ekaterina Nikonova,Jakub Gemrot 译者 | Tianyu 出品 | AI科技大本营(ID:rgznai100) 现在说起<愤怒的小鸟 ...

  2. Python游戏开发,pygame模块,Python实现愤怒的小鸟【附带源码】

    前言 这次带大家仿写个之前有段时间比较火的愤怒的小鸟小游戏呗. 废话不多说,让我们愉快地开始吧~ 开发工具 **Python版本:**3.6.4 相关模块: pygame模块: 以及一些python自 ...

  3. 愤怒的小鸟素材包_点映预售开启|愤怒的小鸟2搞笑升级,萌贱无敌!

    8月10日&8月11日 电影<愤怒的小鸟2>即将超前点映! 碑林店 8月10日 14:50 高新店 8月10日 14:10 大明宫店 8月10日 14:20 民乐园店 8月10日/ ...

  4. 《愤怒的小鸟》对移动互联网经营的启示

    <愤怒的小鸟>从2009年12月登陆苹果iOS平台后,仅用了1年多的时间,就变成了风靡全球的一款力作.据统计,<愤怒的小鸟>在苹果App Store累计付费下载1300万次,产 ...

  5. 愤怒的小鸟【$DP$优化】

    卡常的状压\(DP\),愤怒的小鸟. 其实本来是个很水的状压\(DP\),但因为最后三个点\(n=18\),成功地把我的不可能达到的下界为\(\Omega(2^nn^2)\),紧确的上界为\(O(2^ ...

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

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

  7. Unity3D笔记 愤怒的小鸟一场景切换

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

  8. 100万“愤怒的小鸟”:中国手机开发者生存调查

    2019独角兽企业重金招聘Python工程师标准>>> 在很多投身这一行业的开发者心中,都怀揣着一夜成名的梦想,希望有一天能做出像<水果忍者>.<愤怒的小鸟> ...

  9. Noip 2016 愤怒的小鸟 题解

    [NOIP2016]愤怒的小鸟 时间限制:1 s   内存限制:256 MB [题目描述] Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0, ...

  10. android飞翔的小鸟游戏素材包_开心消消乐×愤怒的小鸟:为开心而战

    手机里总有那么一些游戏,是你一旦不小心打开,就完全停不下来的.在这份"一直玩一直爽游戏清单"里,绝对少不了开心消消乐和愤怒的小鸟的身影. 神奇的是,在2020的夏天,它们合体了!在 ...

最新文章

  1. Git 高级用法小抄
  2. EST:西湖大学鞠峰组-污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
  3. 面试----Object类
  4. spring boot validated的使用
  5. 犯了一个连接数据库的低级错误
  6. 如何开发Web应用程序(非网站)
  7. Jmeter之BeanShell
  8. smarty 引用php类,smarty 的PHP引用
  9. phantomjs搭建输出js渲染后的html接口
  10. gd动态曲线 php_PHP 高级编程之多线程
  11. Google C++ Testing Framework之断言
  12. magento网站建设_跨境自建站Magento麦进斗代打包代贴单代发货
  13. [LeetCode] Spiral Matrix II
  14. HDU--2502 月之数
  15. Flask模板操作一:基本使用
  16. PlantUML 简明教程
  17. 计算机英语听力速记...,2018计算机考研英语听力速记技巧才是王道
  18. 331. 验证二叉树的前序序列化
  19. 自定义可折叠和展开的View
  20. 三维空间中直角坐标与球坐标的相互转换

热门文章

  1. java的字符串的加密_Java加密解密字符串
  2. python货币转化为资本的前提_深度剖析比特币背后的技术细节
  3. 拓端tecdat|R语言用Copulas模型的尾部相依性分析损失赔偿费用
  4. 拓端tecdat|决策树算法建立电信客户流失模型
  5. 拓端tecdat|豆瓣大数据分析告诉你,高评分影视密码
  6. c语言作业模块化设计具体,C语言程序模块化设计.doc
  7. python3中浮点数float的四舍五入,round跟decimal区别
  8. VLFeat在matlab和vs中安装
  9. MatConvnet工具箱文档翻译理解一
  10. Caffe学习:Data