首页 > 其他分享 >P7870 「Wdoi-4」兔已着陆

P7870 「Wdoi-4」兔已着陆

时间:2024-03-29 23:29:49浏览次数:16  
标签:着陆 P7870 int Wdoi back len stk long times

P7870 「Wdoi-4」兔已着陆 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:发现 k k k很大,不能暴力,但是对于放入的 l . . . r l...r l...r来说可以整段整段的取出来。因此将 ( l , r ) (l,r) (l,r)存入栈中,取出时依次出栈即可。

令 l e n = r − l + 1 len = r - l + 1 len=r−l+1

  • 如果 k ≥ l e n k \ge len k≥len:这整段全部用上的值为:
    l e n × l + l e n × ( l e n − 1 ) / 2 len \times l + len \times (len - 1) /2 len×l+len×(len−1)/2

  • 如果 k < l e n k \lt len k<len:只用一部分,并将 [ l , r ] [l, r] [l,r]修改为 [ l , r − k ] [l, r - k] [l,r−k]
    k × r − k × ( k − 1 ) / 2 k \times r - k \times (k - 1) / 2 k×r−k×(k−1)/2

代码如下:

#include <bits/stdc++.h>
using namespace std;
struct no {
    int l, r;
};
int main()
{
    int n; cin>>n;
    vector<no> stk;
    for(int i = 0; i < n; ++i) {
        int op; cin>>op;
        if(op == 1) {
            int l, r; cin>>l>>r;
            stk.push_back({l, r});
        } else {
            long long k,sum = 0; cin>>k;
            while(stk.size() && k) {
                auto t = stk.back(); stk.pop_back();
                long long len = t.r - t.l + 1;
                if(k >= len) {
                    sum += len * t.l + len * (len - 1) / 2;
                    k -= len;
                } else {
                    sum += k * t.r - k * (k - 1) / 2;
                    t.r -= k;
                    stk.push_back(t);
                    k = 0;
                }
            }
            cout<<sum<<'\n';
        }
    }
}

感觉用结构体比用stl容器的pair<int,int>array<int,2>要方便的多(

标签:着陆,P7870,int,Wdoi,back,len,stk,long,times
From: https://blog.csdn.net/qq_63432403/article/details/137073101

相关文章

  • P8539 「Wdoi-2」来自地上的支援
    P8539「Wdoi-2」来自地上的支援移项维护特殊值。这题思路还是挺简单的。首先分析操作。发现操作序列一定是单调递增的,也就是每个数只会被选中连续几次,之后就不会再被选中了。然后分析询问。我们发现要满足条件,\(x\)显然是在\([x,x+k-1]\)被选中。那么首先\(x+k-1>n\)......
  • P8543 「Wdoi-2」纯粹的复仇女神 题解
    自己的套路还是见少了。思路考虑扫描线。每一个颜色的\(\min\)具有单调性,这个很好看出来。可以使用一个单调栈来维护。这里都是朴素的。考虑如何维护。我们发现在通过单调栈维护的时候。需要支持撤销上一个元素对区间的影响。我就在这里卡了很久。我们有一个很暴力的......
  • P8544 「Wdoi-2」禁断之门对面,是此世还是彼世
    由于\(A_{i,j}=a_ib_j\),这个\(f(B)\)显然可以化简:\[\begin{aligned}f(B)&=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^t\sum\limits_{k=\min(B_{i,j},B_{i+1,j})}^{\max(B_{i,j},B_{i+1,j})}A_{i,k}\\&=\sum\limits_{i=1}^n\sum\limits_{j=1}^t\sum\l......
  • 案例—猎鹰火箭自主着陆--复现
    案例—猎鹰火箭自主着陆代码网址:Falcon9-Soft-Landing-Simulation:基于Simulink和Flightgear的猎鹰9号软着陆仿真(gitee.com)1.运行步骤##软件配置-MATLAB2020a-FlightGear2019.1.2-CVX(Matlab凸优化求解器)http://cvxr.com/cvx/凸优化工具箱使用安装网址 ---运......
  • 国产软件的「硬替代」与「软着陆」之辨
    作者|曾响铃文|响铃说疫情倒逼、政策驱动、市场化博弈、国际形势拉锯等等一系列的因素正在综合影响国产软件的走势。在国内,国产软件替代化进程持续加速,国产软件正迎来逆......
  • 动手实践丨基于ModelAtrs使用A2C算法制作登月器着陆小游戏
    摘要:在本案例中,我们将展示如何基于A2C算法,训练一个LunarLander小游戏。本文分享自华为云社区《​​使用A2C算法控制登月器着陆​​》,作者:HWCloudAI。LunarLander是一款控制......
  • 飞行管理着陆系统(FLS)
    飞行管理着陆系统(FMSLandingSystem,FLS)是由空客提出的一种进近引导技术,是提升机组进近过程中下滑感知能力,提高没有GS引导情况下进近安全性的有效手段,能够在执行除RNP......
  • 洛谷P8539 「Wdoi-2」来自地上的支援 题解
    ST表做法思路当进行第\(x\)次操作时,若\(b_1\)到\(b_{x-1}\)中有比\(b_x\)大的数,那这次操作轮不到\(b_x\),并且前面的本来就比它大的数只会越来越大,所以以后的......
  • 基于QT实现的机场的起飞和着陆管理模拟系统
    基于QT实现的机场的起飞和着陆管理模拟系统机场的起飞和着陆管理模拟【题目描述】设飞机场有四条跑道,四条都可以用于起飞,其中三条用于正常着陆,第四条用于紧急着陆。要求......
  • P7870 「Wdoi-4」兔已着陆 题解
    大家好,由于我非常喜欢线段树,所以我用线段树切了这题。提供一种复杂度为\(\mathcal{O}(n\log^2n)\)线段树二分的做法。我们想一下,我们要用线段树来优化什么操作。我们......