个人网站-个人主页作业,免费成品网站模板下载,有个人代做网站的吗,游戏开发大亨破解版CF1561C Deep Down Below 题解题目链接字面描述Deep Down Below题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路TLE算法具体思想TLE特例AC思想代码实现备注题目
链接
https://www.luogu.com.cn/problem/CF1561C
字面描述
Deep Down Below
题面翻译…
CF1561C Deep Down Below 题解题目链接字面描述Deep Down Below题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路TLE算法具体思想TLE特例AC思想代码实现备注题目
链接
https://www.luogu.com.cn/problem/CF1561C
字面描述
Deep Down Below
题面翻译
TTT 组数据每次给定 nnn 个任务第 iii 个任务给定 kik_iki 个怪物每个怪物有一个能力值 ai,ja_{i,j}ai,j 你要按顺序把这 kik_iki 个怪物杀死你能杀死一个怪物当且仅当你的能力值严格大于怪物的能力值杀死一个怪物后你的能力值将会 111。
你可以按任意顺序完成这 nnn 个任务你需要确定最小的初始能力值。
T≤105,n≤105,ki≤105,∑ki≤105,ai,j≤109T\leq 10^5,n\leq 10^5,k_i\leq10^5,\sum k_i\leq 10^5,a_{i,j}\leq 10^9T≤105,n≤105,ki≤105,∑ki≤105,ai,j≤109。
题目描述
In a certain video game, the player controls a hero characterized by a single integer value: power. The hero will have to beat monsters that are also characterized by a single integer value: armor.
On the current level, the hero is facing $ n $ caves. To pass the level, the hero must enter all the caves in some order, each cave exactly once, and exit every cave safe and sound. When the hero enters cave $ i $ , he will have to fight $ k_i $ monsters in a row: first a monster with armor $ a_{i, 1} $ , then a monster with armor $ a_{i, 2} $ and so on, finally, a monster with armor $ a_{i, k_i} $ .
The hero can beat a monster if and only if the hero’s power is strictly greater than the monster’s armor. If the hero can’t beat the monster he’s fighting, the game ends and the player loses. Note that once the hero enters a cave, he can’t exit it before he fights all the monsters in it, strictly in the given order.
Each time the hero beats a monster, the hero’s power increases by $ 1 $ .
Find the smallest possible power the hero must start the level with to be able to enter all the caves in some order and beat all the monsters.
输入格式
Each test contains multiple test cases. The first line contains the number of test cases $ t $ ( $ 1 \le t \le 10^5 $ ). Description of the test cases follows.
The first line of each test case contains a single integer $ n $ ( $ 1 \le n \le 10^5 $ ) — the number of caves.
The $ i $ -th of the next $ n $ lines contains an integer $ k_i $ ( $ 1 \le k_i \le 10^5 $ ) — the number of monsters in the $ i $ -th cave, followed by $ k_i $ integers $ a_{i, 1}, a_{i, 2}, \ldots, a_{i, k_i} $ ( $ 1 \le a_{i, j} \le 10^9 $ ) — armor levels of the monsters in cave $ i $ in order the hero has to fight them.
It is guaranteed that the sum of $ k_i $ over all test cases does not exceed $ 10^5 $ .
输出格式
For each test case print a single integer — the smallest possible power the hero must start the level with to be able to enter all the caves in some order and beat all the monsters.
样例 #1
样例输入 #1
2
1
1 42
2
3 10 15 8
2 12 11样例输出 #1
43
13提示
In the first test case, the hero has to beat a single monster with armor $ 42 $ , it’s enough to have power $ 43 $ to achieve that.
In the second test case, the hero can pass the level with initial power $ 13 $ as follows:
enter cave $ 2 $ : beat a monster with armor $ 12 $ , power increases to $ 14 $ ;beat a monster with armor $ 11 $ , power increases to $ 15 $ ; enter cave $ 1 $ : beat a monster with armor $ 10 $ , power increases to $ 16 $ ;beat a monster with armor $ 15 $ , power increases to $ 17 $ ;beat a monster with armor $ 8 $ , power increases to $ 18 $ .
思路
TLE算法
具体思想
本人最初的想法十分的朴素针对nnn个任务维护nnn个队首指针。
每次比较出nnn个任务队首怪兽的最小值与当前预算的能力值比较是否能继续打怪是 - 继续 否 - 加到怪兽能力值1即可。
TLE特例
如果有1e5个任务每个任务只有1个怪兽。 按此算法
时间复杂度退化O(n⋅Σk)≈1e10O(n·Σk)≈1e10O(n⋅Σk)≈1e10 TLE ! ! !
AC思想
2阶段处理
算出每组打怪加能力的情况下每一个怪兽所对应初始能力值并取max将nnn个max从小到大排序依次循环看每个max加上对应任务里的元素数能加多少次能力是否能满足下一个max,是 - continue 否 - 加到下一个max。
时间复杂度O(Σk⋅log(Σk))≈2e6O(Σk·log(Σk))≈2e6O(Σk⋅log(Σk))≈2e6
阶段线性处理tql !
代码实现
#includebits/stdc.h
using namespace std;const int maxn1e510;
int t,n,ans;
int k[maxn];
vectorinte[maxn];
struct node{int v,cnt;
}a[maxn];
inline bool cmp(node p,node q){return p.vq.v;}
int main(){scanf(%d,t);while(t--){scanf(%d,n);for(int i1;in;i){e[i].clear();scanf(%d,k[i]);//算每组的最大值for(int j1;jk[i];j){int x;scanf(%d,x);xx2-j;if(j!1)xmax(x,e[i][j-2]);e[i].push_back(x);}a[i].ve[i][k[i]-1];//最大值的最小取值a[i].cntk[i];//任务里的怪兽数//printf(%d %d %d\n,i,a[i].v,a[i].cnt);}sort(a1,an1,cmp);ansa[1].v;int lansa[1].cnt;//排序比较for(int i2;in;i){if(la[i].v){ansansa[i].v-l;la[i].v;}la[i].cnt;}printf(%d\n,ans);}return 0;
} 备注
写入好题本