2022杭电多校 第三场 B题 Boss Rush
题目链接
Boss Rush
题目大意
给了我们一个Boss的血量,然后给了我们nnn个技能,每个技能有施法时间和一个施法过程时间,会造成一个持续性伤害,题目问我们最快什么时候能干掉Boss?
题解
考虑二分答案,然后我们需要进行判定在midmidmid时间时,所能造成的最大伤害是多少,如果大于等于Boss的血量,那么返回true,否则返回false。我们计算最大伤害时,可以考虑使用状压DP,f[i]f[i]f[i]中的iii表示一个状态——哪一位为1就代表使用过哪些技能。具体状态转移可以看代码
代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
#define IOS ios::sync_with_stdio(false); cin.tie(0);cout.tie(0);
#define x first
#define y second
#define int long long
#define endl '\n'
const int inf = 1e9 + 10;
const int maxn = 100010, M = 2000010;
const int mod = 1e9 + 7;
typedef pair<int,int> PII;
typedef long long LL;
typedef unsigned long long ULL;
typedef long double LD;
int n, H;
int d[20][maxn], s[20][maxn];
int t[20], len[20];
int f[maxn * 3];
bool check(int mid)
{memset(f, -1, sizeof f);f[0] = 0;for(int i = 0; i < 1 << n; i ++){int time = 0;for(int j = 0; j < n; j ++){if(i >> j & 1) time += t[j];}if(time > mid) continue;for(int j = 0; j < n; j ++){if(i >> j & 1) continue;f[i | 1 << j] = max(f[i | 1 << j], f[i] + s[j][min(len[j], mid - time)]);if(f[i | 1 << j] >= H) return true;}}return false;
}
signed main()
{IOS;int T; cin >> T;while(T --){cin >> n >> H;int l = 0, r = 0;for(int i = 0; i < n; i ++){cin >> t[i] >> len[i];r += max(t[i], len[i]);for(int j = 1; j <= len[i]; j ++) cin >> d[i][j];for(int j = 1; j <= len[i]; j ++) s[i][j] = s[i][j - 1] + d[i][j];}while(l < r){int mid = l + r >> 1;if(check(mid)) r = mid;else l = mid + 1;}if(!check(l)) cout << -1 << endl;else cout << l - 1 << endl;} return 0;
}
2022杭电多校 第三场 B题 Boss Rush相关推荐
- 2022杭电多校第八场题解
2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...
- 2022杭电多校(三)
2022杭电多校(三) 文章目录 2022杭电多校(三) 一.比赛小结 二.题目分析及解法(基础题) 1001.Equipment Upgrade 1002.Boss Rush 1003.Cyber ...
- 2019.7.29 杭电多校第三场小结
index > 杭电多校第三场 题号 标题 AC 做法 状态 6603 Azshara's deep sea (51/150)34.00% 6604 Blow up the city (213/ ...
- 2021杭电多校第八场补题
比赛传送门:Contest Problem List (hdu.edu.cn) 1006)GCD Game 题目翻译:爱丽丝和鲍勃正在玩游戏. 他们轮流操作.有n个数字,a1,a2,...,an.每次 ...
- 杭电多校第三场-H-Game
题目描述 Again Alice and Bob is playing a game with stones. There are N piles of stones labelled from 1 ...
- 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)
Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...
- [枚举]Stormwind 2022杭电多校第8场 1011
Problem Description \space \space "So, people of Stormwind! Let us unite this day. Let us rene ...
- 2022 年杭电多校第八场补题记录
A Theramore 题意:给定一个长度为 nnn 的 010101 串,每次可以选取一个奇数长度的连续子串进行位置上的翻转,问经过若干次操作能得到的字典序最小的串.n≤5×105n \leq 5\ ...
- 2022杭电多校第八场
文章目录 1001.Theramore 1007.Darnassus 1008.Orgrimmar 1011.Stormwind 1001.Theramore 易知,字符串的奇偶项之间不会互换,只需要 ...
- hdu 6656 2019杭电多校第7场 期望题
设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...
最新文章
- phpstudy下的mysql升级
- php 浅复制 和 深复制(clone)
- 常见Java面试题 抽象类能使用 final 修饰吗?
- Markdown+Pandoc→HTML幻灯片速成
- 代码重新发布后docker服务会不会受影响_分享点经验 | 浅谈微服务架构
- 黑马程序员_java基础一
- 借助 Lucene.Net 构建站内搜索引擎(下)
- 【0709作业】简易的购房商贷月供计算器
- 香港服务器防攻击能力怎么样
- 高红梅:第三章 第三节 从探寻自我到生命共同体的身份认同
- 四大CPU架构的区别
- 七千年来被国人误解的七句古话
- hadoop Error: JAVA_HOME is incorrectly set.Please update C:\hadoop-3.0.0\etc\hadoop\hadoop-env.cmd
- python excel sheet_人生苦短我学Python——Excel处理之快速创建多个Sheet并重命名
- 绝地求生——PUBG吃鸡游戏模糊,画质很差
- 任务分配到每个工作日
- C语言编译器Visual C++(中文版)的安装
- 第一期 前言 《路由器就是开发板》
- JSONObject转集合List
- 简单使用系统的设备实现二维码扫描