2017百度之星资格赛—1003度度熊与邪恶大魔王
其他题目就不发博客了(有些也没做出来!!),感觉这次百度之星资格赛题目数据有毒,吐槽,其他题目也不好说,感觉这个题目正常点。
这个题目我当时想到的就是动态规划,但是评论中很多人说是贪心,我一直不理解,认为他们对于贪心和动态规划之间的范畴没有搞清楚(可能是我没搞清楚!有错误请dalao指正),可能有dalao能贪心出来(一脸敬佩);虽然知道是动态规划问题,可转移方程怎么搞?我一直在想(比较弱!!),想了许多的动态规划的方法,还是用打表的方式(就是每种可能出现的怪兽,根据这组数据的技能和伤害值,用数组记录它消耗的最小晶石数目),这样全部出来了就方便了,将出现的怪兽消耗的最小晶石数目加起来即可;比赛开始一个小时才AC这个题目,一发AC(比较开心),有dalao有更好的方法请赐教(万分感谢!!)。
AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const long long INF=1e15;
const int maxn=100000+10;
const int maxm=1000+10;
struct P{int live;//怪兽的生命值 int figth;//怪兽的防御力
}p[maxn];
struct V{int money;//技能的消耗晶石数目int shai;//技能的伤害值
}v[maxm];
long long ans[maxm][15];//存储每种怪兽需要消耗的最小晶石数目
int n,m;
bool cmpp(P a,P b)
{return a.figth>b.figth;//以怪兽的防御力从大到小排序
}
bool cmpv(V a,V b)
{return a.shai>b.shai;//以技能的伤害值从大到小排序
}
int main()
{while(scanf("%d%d",&n,&m)==2){int i,j,k;for(i=0;i<n;i++){scanf("%d%d",&p[i].live,&p[i].figth);}for(i=0;i<m;i++){scanf("%d%d",&v[i].money,&v[i].shai);}sort(p,p+n,cmpp);sort(v,v+m,cmpv);if(p[0].figth>=v[0].shai)//当怪兽的最大防御力大于等于技能的最大伤害值,不可能消灭全部怪兽 {printf("-1\n");continue;}else{fill(&ans[0][0],&ans[0][0]+maxm*15,INF);//初始每种怪兽都需要消耗无穷大晶石数目,因为是取最小值 for(i=0;i<=10;i++)ans[0][i]=0;//当怪兽的生命值为0时,消耗0晶石for(i=1;i<=1000;i++){for(j=0;j<=10;j++){for(k=0;k<m;k++){int s=v[k].shai;if(s>=i+j)s=i;else{if(s<=j)s=0;elses-=j;}//因为i-s不能<0,所以进行判断赋值,i-s相当于怪兽被技能攻击还剩余的生命值 ans[i][j]=min(ans[i][j],ans[i-s][j]+v[k].money);}}}long long sum=0;for(i=0;i<n;i++)sum+=ans[p[i].live][p[i].figth];//加上每种怪兽需要消耗的最小晶石数目printf("%I64d\n",sum);}}return 0;
}
2017百度之星资格赛—1003度度熊与邪恶大魔王相关推荐
- 2017百度之星 资格赛1003度度熊与邪恶大魔王
1003度度熊与邪恶大魔王 Accepts: 1503 Submissions: 9026 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3 ...
- 2017百度之星资格赛1003 度度熊与邪恶大魔王(完全背包)
题意: 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来.邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力.度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的 ...
- 2017百度之星资格赛 1003 度度熊与邪恶大魔王
本题我们可以类比背包 背包dp[i][j] 表示再有i个物品下j个空间所获得的最大价值 本题dp[i][j] 可以表示干掉i个血量j个防御力下的最小花费 我们看其实我们就是在不同血量之间转移 如果当前 ...
- 2017百度之星 资格赛 1003 度度熊与邪恶大魔王(dp)
#代码: #include<bits/stdc++.h> #define MAXN 1050using namespace std; int n,m; long long int dp[M ...
- 百度之星资格赛1003 度度熊与邪恶大魔王(dp)--2017
度度熊与邪恶大魔王 Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊 ...
- 百度之星资格赛1003 度度熊与邪恶大魔王
Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...
- 百度之星资格赛 1003 度度熊与邪恶大魔王 DP 完全背包
题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=774&pid=1003 题目大意: a[i], ...
- 百度之星资格赛 1003 度度熊与邪恶大魔王(二维dp)
分析 挺好的一道题 dp[i][j]表示打败i颗血j防御力的怪兽需要的最少宝石数 然后就好了,复杂度\(O(n+m*1000*10)\) #include <bits/stdc++.h> ...
- (百度之星资格赛) 度度熊与邪恶大魔王 (dp)
度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石 ...
最新文章
- 机器学习中需要了解的 5 种采样方法
- ios 设备方向判断
- 内存泄露从入门到精通三部曲之常见原因与用户实践
- Visual Tracking:运行ECO模型
- 用键盘来操纵鼠标指针(鼠标损坏时的应急措施)
- mysql 触发器定义变量_MySQL 函数存储过程触发器定义简单示例
- 331页!2021年的精华尽在这本数据库技术年刊
- 大数据分析的思路与流程
- 印象笔记 还回快捷_搭配这9款实用的第三方工具,小白也可以玩转印象笔记
- WIN10外接显示器有妙招
- python:实现Lempel-Ziv算法(附完整源码)
- 大学课设之Mysql图书管理设计
- imag.js|快速掌握全局方法
- 今日算法笔试练习【5】(08-06)(历年笔试题)
- js-array数组-slice-splice
- C语言程序设计教程(第三版)课后习题5.7
- 724运维日 | 向运维人致敬!
- 脑机接口再突破,让失语者能“说话”
- JDK1.8中文文档-阿里云盘
- 商品详情页系统架构-笔记4-商品详情页多级缓存