百度之星2017资格赛1003 度度熊与邪恶大魔王

2024-03-30 05:48

本文主要是介绍百度之星2017资格赛1003 度度熊与邪恶大魔王,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Problem Description

度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来。

邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力。

度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石,造成p[i]点伤害。

当然,如果度度熊使用第i个技能打在第j个怪兽上面的话,会使得第j个怪兽的生命值减少p[i]-b[j],当然如果伤害小于防御,那么攻击就不会奏效。

如果怪兽的生命值降为0或以下,那么怪兽就会被消灭。

当然每个技能都可以使用无限次。

请问度度熊最少携带多少晶石,就可以消灭所有的怪兽。

Input

本题包含若干组测试数据。

第一行两个整数n,m,表示有n个怪兽,m种技能。

接下来n行,每行两个整数,a[i],b[i],分别表示怪兽的生命值和防御力。

再接下来m行,每行两个整数k[i]和p[i],分别表示技能的消耗晶石数目和技能的伤害值。

数据范围:

1<=n<=100000

1<=m<=1000

1<=a[i]<=1000

0<=b[i]<=10

0<=k[i]<=100000

0<=p[i]<=1000

Output

对于每组测试数据,输出最小的晶石消耗数量,如果不能击败所有的怪兽,输出-1

Sample Input

1 2 
3 5 
7 10 
6 8 
1 2 
3 5 
10 7 
8 6

Sample Output


18

思路为dp,代码赛后公布。 
祝大家有好成绩。

转载,访问量++,美滋滋。

#include <cmath>  
#include <cstdio>  
#include <cstdlib>  
#include <cstring>  
#include <iostream>  
#include <map>  
#include <algorithm>  
using namespace std;  #define pi acos(-1)  
#define endl '\n'  
#define srand() srand(time(0));  
#define me(x,y) memset(x,y,sizeof(x));  
#define foreach(it,a) for(__typeof((a).begin()) it=(a).begin();it!=(a).end();it++)  
#define close() ios::sync_with_stdio(0); cin.tie(0);  
#define FOR(x,n,i) for(int i=x;i<=n;i++)  
#define FOr(x,n,i) for(int i=x;i<n;i++)  
#define W while  
#define sgn(x) ((x) < 0 ? -1 : (x) > 0)  
#define bug printf("***********\n");  
typedef long long LL;  
const int INF=0x3f3f3f3f;  
const LL LINF=1e18+7;  
const int dx[]= {-1,0,1,0,1,-1,-1,1};  
const int dy[]= {0,1,0,-1,-1,1,-1,1};  
const int maxn=2005;  
const int maxx=1e5+100;  
const double EPS=1e-7;  
const int mod=998244353;  
template<class T>inline T min(T a,T b,T c)  
{  return min(min(a,b),c);  
}  
template<class T>inline T max(T a,T b,T c)  
{  return max(max(a,b),c);  
}  
template<class T>inline T min(T a,T b,T c,T d)  
{  return min(min(a,b),min(c,d));  
}  
template<class T>inline T max(T a,T b,T c,T d)  
{  return max(max(a,b),max(c,d));  
}  
inline LL Scan()  
{  LL Res=0,ch,Flag=0;  if((ch=getchar())=='-')Flag=1;  else if(ch>='0' && ch<='9')Res=ch-'0';  while((ch=getchar())>='0'&&ch<='9')Res=Res*10+ch-'0';  return Flag ? -Res : Res;  
}  LL dp[maxn][14];//dp[i][j]为花费 i为血 j为防   
LL a[maxx],b[maxx],k[maxn],p[maxn];  int main()  
{  //freopen( "in.txt" , "r" , stdin );  int n,m;  while(~scanf("%d%d",&n,&m))  {  for(int i=1;i<=n;i++)  {  a[i]=Scan();b[i]=Scan();  }  for(int i=1;i<=m;i++)  {  k[i]=Scan();p[i]=Scan();  }  for(int i=0;i<maxn;i++)  for(int j=0;j<=10;j++)  dp[i][j]=LINF;  for(int i=0;i<=10;i++)//防御   {  dp[0][i]=0;  for(int j=1;j<=m;j++)  {  LL t=p[j]-i;//破防的伤害  if(t<=0) continue;  for(int p=t;p<=2003;p++)  {  dp[p][i]=min(dp[p-t][i]+k[j],dp[p][i]);  }  }  for(int j=2002;j>=0;j--)//单调性   {  dp[j][i]=min(dp[j][i],dp[j+1][i]);  }  }  LL ans=0;  for(int i=1;i<=n;i++)  ans+=dp[a[i]][b[i]];  if(ans>=LINF)  puts("-1");  else cout<<ans<<endl;  }  
}  

这篇关于百度之星2017资格赛1003 度度熊与邪恶大魔王的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/860643

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

Imageview在百度地图中实现点击事件

1.首先第一步,需要声明的全局有关类的引用 private BMapManager mBMapMan; private MapView mMapView; private MapController mMapController; private RadioGroup radiogroup; private RadioButton normalview; private RadioBu

百度之星 2015 复赛 1001 (数长方形)

数长方形    Accepts: 595    Submissions: 1225  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊喜欢玩木棒。一天他在玩木棒的时候,发现一些木棒会形成长方形

百度之星 2015 初赛(1) 1002 找连续数

找连续数      Accepts: 401      Submissions: 1911  Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是

百度之星初赛1002(二分搜索)

序列变换    Accepts: 816    Submissions: 3578  Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 给定序列 A={A1,A2,...,An} , 要求改变序列A中

百度之星初赛1006(计算几何:能包含凸包的最小矩形面积)

矩形面积    Accepts: 717    Submissions: 1619  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些

【python 百度指数抓取】python 模拟登陆百度指数,图像识别百度指数

一、算法思想 目的奔着去抓取百度指数的搜索指数,搜索指数的爬虫不像是其他爬虫,难度系数很高,分析之后发现是图片,坑爹的狠,想了下,由于之前做过身份证号码识别,验证码识别之类,豁然开朗,不就是图像识别麽,图像识别我不怕你,于是就有了思路,果然有异曲同工之妙,最后成功被我攻破了,大致思路如下: 1、首先得模拟登陆百度账号(用selenium+PhantomJS模拟登陆百度,获取cookie) 2

百度智能云向量数据库创新和应用实践分享

本文整理自第 15 届中国数据库技术大会 DTCC 2024 演讲《百度智能云向量数据库创新和应用实践分享》 在 IT 行业,数据库有超过 70 年的历史了。对于快速发展的 IT 行业来说,一个超过 70 年历史的技术,感觉像恐龙一样,非常稀有和少见。 但是数据库之所以有这么长的生命力,核心是在不停的变更和创新。 简单回顾一下数据库的历史,在过去的 70 年里面,数据库一直跟着底层基础设

mhtml图片提取 百度图片下载

如果你需要找一些图片,可以先去百度一下,待相关网页加载完成后,点击保存,即可得到一个mhtml文件。这个文件里的图片会用base64进行存储,只需要找到他们并转化就可以。目前在美篇之类的网站上效果还一般,需要继续排查问题。 效果 代码 大概分为提取所有base64、转化为图片两步。 import base64from io import BytesIOfrom PIL import

2017 版本的 WebStorm 永久破解

1.  在IntelliJ官网中下载 最新版本的WebStorm   下载地址:https://www.jetbrains.com/webstorm/download/#section=windows 2. 获取注册码    获取地址:http://idea.lanyus.com/   点击获取注册码,然后将注册码复制,再打开最新版的WebStorm,将注册码粘贴到激活框中就大功告