C. Deep Down Below

原题链接

题解

每一个任务都有一个最小起点能力值,和通过任务后获得的能力值,我们从最小起点开始遍历,如果遍历到某一点累加的能力值+最小起点能力值够不到当前任务的最小能力值,我们把最小起点向右移动直至够到当前任务的最小能力值。

code

#include<bits/stdc++.h>
using namespace std;
struct node
{
    int pos,len;
    bool operator<(const node &b){return b.pos>pos;}
};
int a[100005];
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        vector<node> q;
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            int k;
            cin>>k;
            int start=0;
            for(int j=1;j<=k;j++)
            {
                cin>>a[j];
                start=max(start,a[j]-j+2);//干掉前i-1个怪物后会获得i-1的能力值,还要大于当前怪物的能力值:start+i-1>b[i] -> start+i-1-1>=b[i] 要让start尽可能小
            }
            q.push_back({start,k});
        }
        sort(q.begin(),q.end());

        int start=q[0].pos,far=start+q[0].len;
        for(int i=1;i<q.size();i++)
        {
            if(q[i].pos<=far)
            {
                far+=q[i].len;
            }
            else
            {
                start+=q[i].pos-far;
                far+=q[i].pos-far;
                far+=q[i].len;
            }
        }

        cout<<start<<endl;
    }
    return 0;
}

posted @   纯粹的  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示