题面

题解

  1. 好像昨天wxl大爷讲的是O(Tn*2^n)的做法,后来没想通,就自己写了个O(Tn^2*2^n)的暴力状压,
  2. 莫名其妙过了??数量级二十亿??懵逼,可能到了CCF老爷机上就T了。dp[S]表示现在猪的状态,
  3. 然后枚举两只鸟,然后开炮。

代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = 18;
  4. const int inf = 0x3f3f3f3f;
  5. const double eps = 1e-6; //精度
  6. struct PIG{
  7. double x,y;
  8. }p[20];
  9. int cnt;
  10. int n,m,T,S,pre;
  11. int dp[1<<MAXN];
  12. double a,b;
  13. int main(){
  14. scanf("%d",&T);
  15. while(T--){
  16. memset(dp,0x3f,sizeof(dp));
  17. dp[0]=0;
  18. scanf("%d%d",&n,&m);
  19. for(register int i=1;i<=n;i++)
  20. scanf("%lf%lf",&p[i].x,&p[i].y);
  21. for(register int i=0;i<((1<<n)-1);i++){
  22. S=0;a=0;b=0;pre=0;
  23. if(dp[i]==inf) continue;
  24. for(register int j=1;j<=n;j++){
  25. S=0;pre=0;a=0;b=0;
  26. if((i&(1<<(j-1)))==0){
  27. S|=(1<<(j-1));
  28. pre=j;
  29. }
  30. if(!pre) continue;
  31. for(register int k=1;k<=n;k++)
  32. if((i&(1<<(k-1)))==0 && k!=j)
  33. if(p[pre].x!=p[k].x){
  34. a=p[pre].y*p[k].x/p[pre].x-p[k].y; //二次函数表达式,很好推
  35. a/=(p[pre].x*p[k].x-p[k].x*p[k].x);
  36. if(a>=0) continue;
  37. else{
  38. b=(p[pre].y-a*p[pre].x*p[pre].x)/p[pre].x;
  39. break;
  40. }
  41. }
  42. if(a<0)
  43. for(register int j=1;j<=n;j++) //看是否能打到更多的鸟
  44. if(fabs(a*p[j].x*p[j].x+b*p[j].x-p[j].y)<=eps && j!=pre)
  45. S|=(1<<(j-1));
  46. dp[S|i]=min(dp[S|i],dp[i]+1);
  47. }
  48. }
  49. printf("%d\n",dp[(1<<n)-1]);
  50. }
  51. }

LUOGU P2831 愤怒的小鸟 (NOIP 2016)的更多相关文章

  1. [Luogu P2831] 愤怒的小鸟 (状压DP)

    题面: 传送门:https://www.luogu.org/problemnew/show/P2831 Solution 首先,我们可以先康一康题目的数据范围:n<=18,应该是状压或者是搜索. ...

  2. Luogu P2831 愤怒的小鸟(状压+记忆化搜索)

    P2831 愤怒的小鸟 题意 题目描述 Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于\((0,0)\)处,每次Kiana可以用它向第一象限发射 ...

  3. 【luogu P2831 愤怒的小鸟】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2831 写点做题总结:dp,搜索,重在设计状态,状态设的好,转移起来也方便. 对于一条抛物线,三点确定.(0, ...

  4. luogu P2831 愤怒的小鸟

    题目描述 Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形 ...

  5. LUOGU P2827 蚯蚓 (noip 2016)

    传送门 解题思路 第一眼以为是一个二叉堆,直接上优先队列60分...后来听ztz11说有单调性,新加入的蚯蚓一定比原先在的蚯蚓长度长,开三个队列,分别放原先的长度,切掉后大的那一半,切掉后小的那一半. ...

  6. NOIp 2016 总结

    NOIp 2016 总结 -----YJSheep Day 0 对于考前的前一天,晚自习在复习图论的最短路和生成树,加深了图的理解.睡得比较早,养足精力明日再战. Day 1 拿到题目,先过一边,题目 ...

  7. 【NOIP 2016】斗地主

    题意 NOIP 2016 斗地主 给你一些牌,按照斗地主的出牌方式,问最少多少次出完所有的牌. 分析 这道题的做法是DFS. 为了体现这道题的锻炼效果,我自己写了好多个代码. Ver1 直接暴力搞,加 ...

  8. [NOIP]2016天天爱跑步

    [NOIP]2016天天爱跑步 标签: LCA 树上差分 NOIP Description 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ...

  9. P2831 愤怒的小鸟

    P2831 愤怒的小鸟 从 \((0, 0)\) 发射一只鸟, 轨迹满足抛物线, 问最少几只鸟可以打完 \(n <= 18\) 只猪 错误日志: 处理抛物线数组没有初始化 Solution 数据 ...

随机推荐

  1. js用document.getElementById时要注意!

    <!DOCTYPE html> <html lang="en"> <head> <script src="http://code ...

  2. Neo4j模糊查询及分页查询

    Neo4j模糊查询:采用正则方式: MATCH (n:House) where n.Name =~ '李.*' RETURN n 分页: 使用skip 及 limit MATCH (n:House) ...

  3. Redis问题整理

    Redis问题总结 1.单点登录的两个项目cookie不一致 由于在配置自定义Cookie的时候 @Bean("shiroCookie") public SimpleCookie ...

  4. sql (3) where

    WHERE 子句用于规定选择的标准.语法SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 引号的使用请注意,我们在例子中的条件值周围使用的是单引号. SQL 使用单引号来环绕文本值( ...

  5. Android开发 ImageView开发记录

    改变图片的着色 默认是这个方法 /** * 为图像设置着色选项. Assumes * {@link PorterDuff.Mode#SRC_ATOP} blending mode. * * @para ...

  6. Binary XML file line #23: Error inflating class android.widget.TextView

    分析一波,报错23行TextView的问题,但是检查了xml没有发现23行又TextView相关代码,就不应该继续纠结xml了,代码是通过R文件拿到xml资源的,你就应该怀疑是R文件的问题,R文件编译 ...

  7. Caused by: android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class android.widget.CheckedTextView

    困扰了我一天啊 终于吧 这个大bug  给解决掉了 可能是 当时懵逼了  竟然忘记重新构造了!!尴尬了 直接把项目的 build  文件删除重新构造了一边!!

  8. Python 正整数相加其余忽略

    从键盘上输入若干数值,对其中的正整数求和,非正整数(负整数,实数或其他符号)忽略,这个过程一直到输入“#”结束. i = 0while True: m = input("请输入一个数:&qu ...

  9. npm run server报错

    从git上clone的vue项目npm install后npm run server报错 $ npm run dev > lufei@1.0.0 dev E:\pythonProject\luf ...

  10. 关于InputMethodManager的使用方法

    InputMethodManager是一个用于控制显示或隐藏输入法面板的类(当然还有其他作用).获取InPutMethodManager的方法很简单. InputMethodManager imm = ...