博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
p1460
阅读量:4597 次
发布时间:2019-06-09

本文共 1444 字,大约阅读时间需要 4 分钟。

  终于A掉了noip2016的Day2T3,至此,2015和2016的NOIP题都刷完了.

  

  写一下这道题卡常的过程吧.

  真的只需要卡常啊.

  

  

  m不用管了,反正奔着AC去的.

  考虑怎么搜索?我们可以n^2的枚举所有的抛物线,再O(n)的枚举这条抛物线可以打掉哪些小猪.用一个二进制数存一下状态.

  然后把所有的状态入队,答案设为1,然后开始bfs啦.

  我们需要一些常数优化即可A掉本题.

struct node {    double x,y;}o[20];int tot,T,n,m,now,t;double a,b,eps=1e-10;double geta(node a,node b){    return (a.y*b.x/a.x-b.y)/(b.x*a.x-b.x*b.x);}double getb(double a,node b){    return b.y/b.x-a*b.x;}int can[1<<20],ans[1<<20];bool v[1<<20];queue
q;inline void write(int x){ if(x==0){ putchar('0'); return; } if(x<0){ putchar('-'); x=-x; } int num=0;char ch[16]; while(x) ch[++num]=x%10+'0',x/=10; while(num) putchar(ch[num--]); }int main(){ for(scanf("%d",&T);T;--T) { scanf("%d%d",&n,&m);//久违的用scanf读入 for(register int i=1;i<=n;++i)//吹爆register! scanf("%lf%lf",&o[i].x,&o[i].y); tot=0; for(register int i=1;i<=n;++i) { tot++; can[tot]=1<
=-eps)//如果a是负数就不要 continue; b=getb(a,o[i]); tot++;can[tot]=0; for(register int j=1;j<=n;j++) if(fabs(a*o[j].x*o[j].x+b*o[j].x-o[j].y)<=eps) can[tot]|=1<
now&&ans[now]+1
View Code

  吹爆register好吧,TLE秒变AC.(其实T掉的在本地跑也就是1.1s...)

>>>

 

转载于:https://www.cnblogs.com/qywyt/p/10424299.html

你可能感兴趣的文章
(二)程序中的内存&&栈
查看>>
一个实例来见证LINGO的强大
查看>>
C# — WinForm TCP连接之服务器端
查看>>
HTML8
查看>>
asp.net 导出excel 以及插入图片
查看>>
揭密Google Map的工作原理(转)
查看>>
掌握这几种微服务模式助你成为更出色的工程师
查看>>
clapack在android上移植
查看>>
java学习 - 读代码记录2
查看>>
mysql,mycat的demo
查看>>
MongoDB--CSharp Driver Quickstart .
查看>>
Android 开发框架【转】
查看>>
ansible基础-Jinja2模版 | 测试
查看>>
数字图像处理实验(5):PROJECT 04-01 [Multiple Uses],Two-Dimensional Fast Fourier Transform ...
查看>>
sqlite3:深入理解sqlite3_stmt 机制
查看>>
一个注释版的查取列表信息
查看>>
使用Ctex总结1
查看>>
ios关闭自动更新
查看>>
10 款非常棒的CSS代码格式化工具推荐
查看>>
【BZOJ2298】[HAOI2011]problem a
查看>>