当前位置: 首页 > 编程日记 > 正文

【NOIP2016】愤怒的小鸟

Description

Kiana最近沉迷于一款神奇的游戏无法自拔。 
简单来说,这款游戏是在一个平面上进行的。 
有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如y = ax^2 + bx的曲线,其中a, b是Kiana指定的参数,且必须满足a<0。 
当小鸟落回地面(即x轴)时,它就会瞬间消失。 
在游戏的某个关卡里,平面的第一象限中有n只绿色的小猪,其中第i只小猪所在的坐标为(xi,yi)。 
如果某只小鸟的飞行轨迹经过了(xi,yi),那么第i只小猪就会被消灭掉,同时小鸟将会沿着原先的轨迹继续飞行; 
如果一只小鸟的飞行轨迹没有经过(xi,yi),那么这只小鸟飞行的全过程就不会对第i只小猪产生任何影响。 
例如,若两只小猪分别位于(1, 3 )和(3, 3 ) 
Kiana可以选择发射一只飞行轨迹为y=-x^2+ 4x的小鸟,这样两只小猪就会被这只小鸟一起消灭。 
而这个游戏的目的,就是通过发射小鸟消灭所有的小猪。 
这款神奇游戏的每个关卡对Kiana来说都很难,所以Kiana还输入了一些神秘的指令,使得自己能更轻松地完成这个游戏。这些指令将在【输入格式】中详述。 
假设这款游戏一共有T个关卡,现在Kiana想知道,对于每一个关卡,至少需要发射多少只小鸟才能消灭所有的小猪。由于她不会算,所以希望由你告诉她。

Input

Pic

Output

对每个关卡依次输出一行答案。 
输出的每一行包含一个正整数,表示相应的关卡中,消灭所有小猪最少需要的小鸟数量。

Sample Input

样例1输入: 

2 0 
1.00 3.00 
3.00 3.00 
5 2 
1.00 5.00 
2.00 8.00 
3.00 9.00 
4.00 8.00 
5.00 5.00

样例2输入: 

2 0 
1.41 2.00 
1.73 3.00 
3 0 
1.11 1.41 
2.34 1.79 
2.98 1.49 
5 0 
2.72 2.72 
2.72 3.14 
3.14 2.72 
3.14 3.14 
5.00 5.00

Sample Output

样例1输出: 

1

样例2输出: 


3

Hint

样例1提示: 
这组数据中一共有两个关卡。 第一个关卡与【问题描述】中的情形相同,2只小猪分别位于((1.00, 3.00)和(3.00, 3.00),只需发射一只飞行轨迹为y = -x2 + 4x的小鸟即可消灭它们。 第二个关卡中有5只小猪,但经过观察我们可以发现它们的坐标都在抛物线y=-x^2+ 6x上,故Kiana只需要发射一只小鸟即可消灭所有小猪。

数据约束: 
Pic

Source

NOIP2016,动态规划,状态压缩

题解:

状压dp的状态还是比较裸吧,数据范围也提示了这个题目可以状压,设dp[S]表示把集合S中没有打完的猪打完的最小花费。

这个还是比较好转移的,枚举直线,将猪打掉作为转移,当然别忘记只打掉一头猪的情况。

这里讲一下优化,设g[i][j]表示将i和j这两条猪打掉的直线包含那些猪。我们每次进行转移,强制直线要包含第一头没有打掉的猪,因为如果没有打掉他的话,后面还是要花一炮来打掉他,只是交换了一下顺序而已,所以这个东西就可以O(n)枚举直线,复杂度就变成了,2^n*n。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#define MAXN 19
#define ld long double
#define eps 1e-6
#define ll long long
#define RG register
using namespace std;
int dp[1<<MAXN],b[1<<MAXN];ld x[MAXN],y[MAXN];
ll g[MAXN][MAXN];
int n,m;inline bool check(ld a,ld b,int k){if(a*x[k]*x[k]+b*x[k]-y[k]<=eps&&a*x[k]*x[k]+b*x[k]-y[k]>=-eps) return 1;return 0;
}inline int dfs(ll S){if(b[S]) return dp[S];if(S==(1<<n)-1) return dp[S]=0;b[S]=1;int j;for(int i=1;i<=n;i++) if(!(S&(1<<(i-1)))){j=i;break;}for(RG int i=1;i<=n;i++){if(i==j) continue;if((S&(1<<(i-1)))) continue;ld a;a=(y[i]*x[j]-y[j]*x[i])/(x[i]*x[i]*x[j]-x[i]*x[j]*x[j]);if(a>=0) continue;ll tos=S|g[i][j];dp[S]=min(dp[S],dfs(tos)+1);}for(RG int i=1;i<=n;i++){if(!(S&(1<<(i-1)))) dp[S]=min(dp[S],dfs(S|1<<(i-1))+1);}return dp[S];
}void work(){memset(dp,127,sizeof(dp));memset(b,0,sizeof(b));memset(g,0,sizeof(g));scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) cin>>x[i]>>y[i];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){ld a=(y[i]*x[j]-y[j]*x[i])/(x[i]*x[i]*x[j]-x[i]*x[j]*x[j]);if(a>=0) continue; ld b=(y[i]*x[j]*x[j]-y[j]*x[i]*x[i])/(x[i]*x[j]*x[j]-x[i]*x[i]*x[j]);ll tos=0;for(RG int k=1;k<=n;k++) if(check(a,b,k)) tos|=(1<<(k-1));g[i][j]=tos;}printf("%d\n",dfs(0));
}int main()
{int t;cin>>t;while(t--) {work();}
}

转载于:https://www.cnblogs.com/renjianshige/p/7604317.html

相关文章:

“智能”基石:人工智能数据标注与训练,是决定智能时代的第一步

记者 | 邓晓娟 2021年5月20日~23日&#xff0c;由深圳市科学技术协会、深圳市商务局、深圳市福田区人民政府共同指导&#xff0c;深圳市科技开发交流中心、深圳市人工智能行业协会联合主办的2021第二届深圳国际人工智能展开幕式暨智能制造创新高峰论坛在深圳会展中心&#xff0…

C#中对POP3邮件解码

Base64和下面将要介绍的Quoted-Printable都属于MIME &#xff08;多部分( multi-part)、多媒体电子邮件和 WWW 超文本的 一种编码标准&#xff0c;用于传送诸如图形、声音和传真等非文本数 据&#xff09;。MIME定义在RFC1341中。 Base64是现今在互联网上应用最多的一种编码…

php 命中算法

function hitted($rate,&$num){if (is_string($rate))$rate ( float ) $rate;if ($rate > 1)throw new ArgumentException(传入的概率值 $rate 必须是 0~1 之间的浮点数或整数(0|1)。, -1);$r 100 * $rate;$v mt_rand(1, 100);$num $v;if ($v < $r)return true;r…

iframe 数据传递

1.使用iframe是父页面与子页面的数据传递2.使用iframe 跳转部分研究处理ios兼容性 2.1 safai 会阻止iframe里的window.open()函数 采用了讲需要跳转的页面传向父页面&#xff0c;让父页面进行处理跳转 //子页面向父页面传递信息 parent.postMessage({变量名: 数据}, *);//子页面…

C#调用控制面板选项

因为C#是由Microsoft公司推出的&#xff0c;所以它对Microsoft的所有产品的兼容性与相互操作性是其它公司开发出的编程语言所不及的。Microsoft开发的Windows操作系统与C#之间的关系也非常紧密。从而实现了C#对Windows的无缝操作。 下面&#xff0c;我们就以“C#对Windows控制面…

2021 火爆技术人朋友圈的实时音视频 RTC 你 Pick 了嘛?

5月27日20点&#xff0c;第 13 期「大咖来了」&#xff01; CSDN 副总裁于邦旭、融云 CTO 任杰、即构科技副总裁刘莉&#xff0c;多方视角探讨 RTC 超级风口与机遇&#xff0c;还有众多精美礼品等你拿&#xff01; 立即戳&#xff1a;https://live.csdn.net/room/csdnnews/cn…

查询/新建/修改本地用户和组

通过ADSI新建用户user2&#xff1a; 1 #创建新用户&#xff0c;创建完成后的新用户不隶属于任何组2 $computerName$env:computername3 #定义用户名、密码、描述信息4 $username"user2"5 $userpass"password"6 $userdesc"description"7 $ADSI [A…

支付宝接入参考博客

http://www.cnblogs.com/stulzq/p/7606164.html转载于:https://www.cnblogs.com/baiqian/p/7609443.html

活动目录的优势

活动目录的优势 Active Directory服务提供了单一登入的能力和一个所有基础设施相关信息的集中储存机制&#xff0c;大幅度的简化了使用者和计算机的管理&#xff0c;同时提供优越的网络资源存取能力。我在本文中主要讲述一下Microsoft Windows Server 2003 中的 Active Directo…

C#编写一个抓网页的应用程序

本文利用C#和.NET提供的类来轻松创建一个抓取网页内容源代码的程序。HTTP是WWW进行数据访问最基本的协议之一&#xff0c;在.NET的基本类型库类中提供了两个对象类&#xff1a;HTTPWebRequest和HTTPWebResponse&#xff0c;分别用来向某资源发送请求和获得响应。为了得到一个资…

从粗放到精细,如何用AI技术实现信息流广告投放的降本增效

中国的SaaS在经历2020年全球爆发的疫情之后&#xff0c;迎来了前所未有的高光时刻&#xff0c;或者说蛰伏数年终于迎来了爆发。 2021年5月20日&#xff0c;ZTouch&#xff0c;北京中量质子网络信息科技有限公司旗下的企业数智化服务平台&#xff0c;发布了广告数智投放平台Dar…

广义动量定理之作用点的应用分析

广义动量定理之作用点的应用分析 从广义动量定理FαtnmV的角度说&#xff0c;改变作用点&#xff0c;就可以改变成果nmV。作用点派以调整作用点的准确度作为达成目的的手段。 作用点应用于聚焦理论 理论简介&#xff1a;聚焦理论使企业集中力量于某几个细分市场&#xff0c;主攻…

将DBF,XLS,XML,MDB文件导入C#DataGrid的方法

以下的源码里分别给出了将DBF,XLS,XML,MDB文件导入C#DataGrid的方法,供各位参考。 //PutInDataSet.cs的源码 using System; using System.Data.Odbc; using System.Data.OleDb; using System.Data; using System.Collections; namespace PutInDataSet { /// <summary…

超星未来发布新一代高级别自动驾驶车载计算平台

5月25日&#xff0c;由中国汽车工程学会、国家智能网联汽车创新中心主办的第八届国际智能网联汽车技术年会&#xff08;以下称“CICV 2021”&#xff09;在北京亦创国际会展中心举办。超星未来联合创始人、首席技术官梁爽博士应邀出席发表演讲&#xff0c;并在主论坛上发布了超…

Effective Java - Item 1: Consider static factory methods instead of constructors

考虑使用静态工厂方法来替代构造方法, 这样的做的好处有四点. 1. 更好的表意 有的构造方法实际上有特殊的含义, 使用静态工厂方法能更好的表达出他的意思. 例如 BigInteger(int, int, Random) , 它返回一个可能是素数的 BigInteger. 使用工厂方法 BigInteger.probablePrime 可以…

服务器和普通用户电脑的区别

服务器和普通用户电脑的区别 1、硬件方面 经常收到戴尔的广告邮件&#xff0c;看到里面的服务器配置不怎么高&#xff0c;可是价格都很贵。想知道&#xff0c;服务器和普通电脑的区别在哪里呢&#xff1f; 目前使用服务器的站长和企业也比较多&#xff0c;也许有人会觉得二者差…

C#:消息队列应用程序

文章“MSMQ&#xff1a;可伸缩、高可用性的负载平衡解决方案&#xff08;英文&#xff09;”介绍了一种解决方案&#xff0c;用于高可用性消息队列 (MSMQ) 的可伸缩负载平衡解决方案体系结构。此解决方案中涉及了一种将 Windows 服务用作智能消息路由器的开发方案。这样的解决方…

从腾讯实时音视频发家史,看爆发中的 RTC 将何去何从

作者 | 夕颜头图 | 下载于视觉中国出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;早在2015年左右&#xff0c;直播和短视频的兴起渗透进普通人的日常生活&#xff0c;人们信息消费的内容已经开始从文字向语音、视频信息转变。而疫情期间全民“家里蹲”的窘境&#…

山寨c 标准库中的getline 函数

2019独角兽企业重金招聘Python工程师标准>>> 要山寨一个函数&#xff0c;只要看两点 原版函数的形参。原函数的返回值。下面是函数原型。 ssize_t getline(char **lineptr, size_t *n, FILE *stream); 函数返回值。 RETURN VALUE On success, getline() and getde…

封ip对爬虫的影响

今天要聊的是封ip对爬虫的影响。我认为封ip能拒绝一部分网络请求&#xff0c;减轻服务器的压力&#xff0c;但是如果要是建立一个好的ip池&#xff0c;封对爬虫的影响不大。 爬取国内一个拍卖公司的网站&#xff0c;刚开始用多进程下载&#xff0c;每分钟能爬取 1000个页面&…

Python 的一万种用法:制作 Web 可视化页面

来源 | 法纳斯特头图 | 下载于ICphoto一谈到Web页面&#xff0c;可能大家首先想到就是HTML、CSS或JavaScript。本次小F给大家介绍一下如何用Python制作一个数据可视化网页&#xff0c;使用到的是Streamlit库&#xff0c;轻松将一个Excel数据文件转换为一个Web页面&#xff0c;提…

【Go语言】LiteIDE使用的个人使用方法

Go语言开发 可以使用的IDE很多 &#xff08;Goclipse&#xff0c;sublime&#xff0c;notepad&#xff0c;vim等&#xff09;目前使用的最顺手的就是LiteIDE了 但是尽管这样&#xff0c;一开始使用LiteIDE也有很多不习惯的地方&#xff0c;下面主要总结了一些自己喜欢的用法 首…

发挥大数据及其产业在推动发展方式转变上的作用

大数据时代的到来&#xff0c;互联网成为基础设施&#xff0c;数据变成重要资源&#xff0c;这不仅意味着海量、多样、快速的数据处理和技术创新&#xff0c;更为重要的是改变了传统要素的组合方式。这种变化客观上要求必须转变传统的经济增长方式&#xff0c;实现创新驱动发展…

Google 全球 IP 地址库一览表(更新中)

IP 地址来源&#xff1a;http://www.kookle.co.nr&#xff0c;共计4351个。【链接】http://www.kookle.co.nr/https://github.com/justjavac/Google-IPsBulgaria93.123.23.193.123.23.293.123.23.393.123.23.493.123.23.593.123.23.693.123.23.793.123.23.893.123.23.993.123.2…

Linux下的阻塞(Block)

阻塞&#xff08;Block&#xff09;这个概念。当进程调用一个阻塞的系统函数时&#xff0c;该进程被置于睡眠&#xff08;Sleep&#xff09;状态&#xff0c;这时内核调度其它进程运行&#xff0c;直到该进程等待的事件发生了&#xff08;比如网络上接收到数据包&#xff0c;或…

发布 128 核 Altra Max,自研内核,明年推出 5nm 处理器,“性能怪兽”Ampere 搞大事?...

作者 | 伍杏玲出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;头图 | 下载于ICphoto2015 年&#xff0c;在英特尔就职 28 年的总裁 Renee James 辞职&#xff0c;正在大众纷纷猜测她将如何开启下一段旅程时&#xff0c;她有了创业的想法&#xff0c;2017 年带领新团…

纷纷布局的全光网,是你所熟知的吗?

近日&#xff0c;中国电信甘肃公司举行甘肃全光网建成发布会&#xff0c;至2017年4月30日&#xff0c;甘肃省已建成14个全光网市州、87个全光网县区、1234个全光网乡镇、10000个全光网行政村&#xff0c;全省市、县、乡光网宽带覆盖率达到95%以上&#xff0c;全面实现光纤到户;…

内存转换Image到Icon

时候我们需要在内存中转换Image格式到Icon 根据经验&#xff0c;通常我们应该可以这样做 Image image xxxx;///假设这里已经有一个Image对象 System.IO.MemoryStream mStream new System.IO.MemoryStream();///创建内存流 image.Save(mStream, System.Drawing.Imaging.Ima…

Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法

一、Spring定义bean&#xff0c;Component、Repository、Service 和 Controller Spring 2.5 中除了提供 Component 注释外&#xff0c;还定义了几个拥有特殊语义的注释&#xff0c;它们分别是&#xff1a;Repository、Service 和 Controller。在目前的 Spring 版本中&#xff0…

谁是“艾灵”?是腾讯的真国风 AI 虚拟人!

近日&#xff0c;腾讯AI虚拟人艾灵再秀出新技能&#xff0c;首次展示AI作诗、AI书法等国风才艺&#xff0c;并与青年歌手白举纲跨次元合作&#xff0c;共同演唱国风新歌《百川千仞》。AI“艾灵”诞生于腾讯AI Lab&#xff0c;来自实验性、探索性技术项目“多模态虚拟人”。机器…